【问题标题】:Reading from text file not working properly从文本文件读取无法正常工作
【发布时间】:2018-06-09 18:45:20
【问题描述】:

大家好,我在尝试读取 android java 中的文本文件时遇到了一个问题。

public String readFromFile(String filename)
{
    String content = "";
    try
    {
        File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "/MyApplication");
        File file = new File(dir, filename);

        Scanner scanner = new Scanner(file);
        String line = "";

        while(scanner.hasNextLine())
        {
            line = scanner.nextLine();
            content += line + "\n";
        }
        scanner.close();

    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return content;
}

我尝试使用扫描仪和缓冲阅读器来提取内容

public List<String> readFromFile(String filename)
{
    List<String> lines = new ArrayList<String>();
    FileReader fileReader;
    BufferedReader bufferedReader;

    try
    {
        File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "MyApplication");
        File file = new File(dir, filename);

        fileReader = new FileReader(file);
        bufferedReader = new BufferedReader(fileReader);

        String line = bufferedReader.readLine();
        while(line != null)
        {
            lines.add(line);
            bufferedReader.readLine();
        }
        bufferedReader.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return lines;
}

但它们似乎都不起作用。这些函数只返回零,就好像文件是空的一样。此外,我没有收到任何错误消息,并且我仔细检查了路径。通常这些功能对我来说工作得很好,但我无法解决这个问题。

感谢您的帮助:)

编辑:如果发现问题。文件的权限或位置一切都很好,问题只是我放了

FileOutputStream fileOutputStream = new FileOutputStream(file)

在我调用 readFromFile() 方法之前的代码中。我认为因为 readFromFile() 方法返回的文件是空的。感谢您的回答!

【问题讨论】:

  • 你给权限了吗?
  • 是的,至少有权限 READ_EXTERNAL_STORAGE

标签: java android bufferedreader


【解决方案1】:

第二种方法不起作用,因为在您的 while 循环中,您没有将 readLine 方法的结果分配给 line 变量。改变这个

bufferedReader.readLine();

到这里

line = bufferedReader.readLine();

另外,您在 MyApplication 字符串之前的文件路径中缺少 /

我尝试了第一种方法,它成功读取了文件。检查文件是否存在,并检查其内容。另外,请在阅读前检查您的应用是否有权限调用

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
    Log.e(TAG, "READ_EXTERNAL_STORAGE permission not granted!");
}

【讨论】:

  • 正如你所说,我检查了文件是否存在及其内容。尽管文件包含文本,但在检查其长度时,该文件似乎为空。另外,我检查了许可并获得了许可。所以我不明白为什么它显示文件是空的。
  • @AlbertKlug 如果行为相同,您是否在其他设备上尝试过?
【解决方案2】:

您是否授予您的应用读取文件权限?

<uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" / >

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多