【问题标题】:Android: Reading from file (Openfileinput)Android:从文件中读取(Openfileinput)
【发布时间】:2011-05-17 12:25:52
【问题描述】:

我正在尝试为学校项目编写一个基本的“记事本”应用程序。

我创建了带有editText 的主类,我将其另存为String textOutput。

我使用以下方法将字符串保存到文件中:

FileOutputStream fos = openFileOutput(textOutput, Context.MODE_PRIVATE);
fos.write(textOutput.getBytes());
fos.close();

但是 Android 开发人员 参考资料说,为了阅读,我应该使用以下步骤:

从内部存储读取文件:

  • 调用openFileInput() 并将要读取的文件的名称传递给它。这会返回一个FileInputStream
  • 使用read() 从文件中读取字节。
  • 然后用close()关闭流。

这是什么意思,我该如何实现?

【问题讨论】:

    标签: java android


    【解决方案1】:

    一个如何使用openFileInput的例子:

        FileInputStream in = openFileInput("filename.txt");
        InputStreamReader inputStreamReader = new InputStreamReader(in);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            sb.append(line);
        }
        inputStreamReader.close();
    

    【讨论】:

    • 最后别忘了 inputStreamReader.close()。
    • 如果你的类没有扩展上下文,你也可以使用context.openFileInput("");
    【解决方案2】:

    第一个参数是您在使用 openFileOutput 方法时创建/更新的文件的名称。使用上面列出的相同参数,它可能看起来像:

    FileInputStream fis = openFileInput(textOutput);
    

    至于从 FileInputStream 读取,这里和网络上都有很好的记录。最好的方法还取决于您正在阅读的文件类型(例如 XML)。所以我会把它留给你搜索。

    编辑:这里是documentation

    【讨论】:

    • 还意识到您可能不想将文件命名为哈希码(toString() 将在 Java 中默认返回您的 Object),您可能希望使用 String 而不是 textOutput 作为参数。
    • + 1 用于实际文档。现在我知道这个openFileInput 实际上是人们在谈论什么。
    猜你喜欢
    • 2017-11-16
    • 2013-06-30
    • 1970-01-01
    • 2011-11-25
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多