【发布时间】:2021-05-16 16:33:16
【问题描述】:
编辑:在跟进这两个建议时,我确定以下内容可以将字符串作为字节数组写入文件。但现在我需要弄清楚如何将字节数组读回字符串。我可以使用帮助,请... 是否存在与此 FileOutputStream 反向等效的 FileInputStream 组件?这适用于将字符串写入为字节数组。
try {
FileOutputStream fos = openFileOutput("stack.txt", Context.MODE_PRIVATE);
for (String item : stack)
fos.write(stack.pop().getBytes());
fos.close();
sb.append("The Stack is saved.\n");
} catch (IOException e) {
sb.append(e.toString());
}
displayText(sb.toString());
我正在尝试将字符串从 ArrayDeque 写入文件。我将 ArrayDeque 用作堆栈。字符串的长度不同。打开文件进行输出时出现此错误...
java.io.FileNotFoundException: stack.txt: open failed: EROFS (Read-only file system)
我想我已经看过所有关于这个主题的帖子,但没有任何帮助。 我的两个代码 sn-ps 是:
- 在 onCreate()...
root = new File(getExternalFilesDir(null), "/HTMLSpyII/");
if (!root.exists()) {
if (!root.mkdirs()) {
runTimeAlert("File path does not exist or\n" +
"Unable to create path \n" + root.toString());
}
}
- 在程序中...
try {
DataOutputStream dos = new DataOutputStream(
new FileOutputStream("stack.txt")); // program fails here
for (String item : stack)
dos.writeUTF(stack.pop());
dos.close();
sb.append("The Stack is saved.\n");
} catch (IOException e) {
sb.append(e.toString());
}
displayText(sb.toString());
我有使用 DataInputStream 和 FileInputStream 读取它们的并行代码。我错过了一些东西。是否在创建文件之前进行了一些初步准备?
做一些研究后,我感觉问题可能是我还不熟悉使用新的特定于应用程序的持久性内部/外部存储的要求?但我不知道,所以我正在寻找一些指导,请:)
【问题讨论】:
-
new FileOutputStream("stack.txt"));替换为File file = new File(root, "stack.txt"); new FileOutputStream(file); -
@Joachim Sauer 我在那里没有找到答案。有趣的东西,但不是一种文件技术,我可能会用它来打开写和读回一系列字符串:( blackapps 我无法弄清楚如何进行你建议的替换工作:( 我需要使用 readUTF 和 writeUTF 哪个需要 ObjectInputStream 和 ObjectOutputStream。我用我的新方法编辑了帖子。似乎 writeUTF/readUTF 是唯一将字符串写入文件然后读回它们的对。它们是 java.io.ObjectOutputStream 的一部分。我需要找到一种在不崩溃的情况下打开/关闭文件的方法。
标签: java android filenotfoundexception fileoutputstream dataoutputstream