java.io.FileNotFoundException Save/Load 内部存储 android
java.io.FileNotFoundException Save/Load in internal storage android
我正在尝试将数据从应用程序保存到内部存储并将其加载回来,但我觉得我遗漏了什么并且在加载中找不到文件。
保存代码:
private void saveScanData(List<MyStack> surf) throws IOException {
Log.i(TAG, "Saving");
String filename = String.format("Scan%05d.data", scanNumber);
scanNumber += 1;
ObjectOutput out;
File outFile = new File(Environment.getExternalStorageDirectory(), filename);
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(surf);
out.close();
}
加载代码:
public void load(View view) {
ObjectInput in;
List<MyStack> surf= null;
try {
in = new ObjectInputStream(new FileInputStream("Scan%05d.data"));
surf= (List<MyStack>) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
Model model= new Model(surf);
Intent intent = new Intent(this, EditorPresenter.class);
intent.putExtra("model", model);
startActivity(intent);
}
感谢您的帮助。
使用打开的 openFileOutput 和 openfileInput 方法,而不是打开新的输入和输出流。
http://developer.android.com/intl/es/guide/topics/data/data-storage.html#filesInternal
此外,您正试图将文件保存在 ExternalStorage 文件夹中。
Environment.getExternalStorageDirectory()
。在该文件夹中写入需要对 AndroidManifest
的 Android 权限
您将名称写入文件
String.format("Scan%05d.data", scanNumber)
但是您读取了名称为
的文件
"Scan%05d.data"
要么更改您的对象输入流创建,要么使用其他方法创建文件名。
new ObjectInputStream(new FileInputStream(String.format("Scan%05d.data", scanNumber));
您正在写入外部存储:
new File(Environment.getExternalStorageDirectory(), filename);
您正在阅读:
new ObjectInputStream(new FileInputStream("Scan%05d.data"));
如果要使用外部存储,请在两个地方都使用外部存储,而不仅仅是一个。
我正在尝试将数据从应用程序保存到内部存储并将其加载回来,但我觉得我遗漏了什么并且在加载中找不到文件。
保存代码:
private void saveScanData(List<MyStack> surf) throws IOException {
Log.i(TAG, "Saving");
String filename = String.format("Scan%05d.data", scanNumber);
scanNumber += 1;
ObjectOutput out;
File outFile = new File(Environment.getExternalStorageDirectory(), filename);
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(surf);
out.close();
}
加载代码:
public void load(View view) {
ObjectInput in;
List<MyStack> surf= null;
try {
in = new ObjectInputStream(new FileInputStream("Scan%05d.data"));
surf= (List<MyStack>) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
Model model= new Model(surf);
Intent intent = new Intent(this, EditorPresenter.class);
intent.putExtra("model", model);
startActivity(intent);
}
感谢您的帮助。
使用打开的 openFileOutput 和 openfileInput 方法,而不是打开新的输入和输出流。
http://developer.android.com/intl/es/guide/topics/data/data-storage.html#filesInternal
此外,您正试图将文件保存在 ExternalStorage 文件夹中。
Environment.getExternalStorageDirectory()
。在该文件夹中写入需要对 AndroidManifest
您将名称写入文件
String.format("Scan%05d.data", scanNumber)
但是您读取了名称为
的文件"Scan%05d.data"
要么更改您的对象输入流创建,要么使用其他方法创建文件名。
new ObjectInputStream(new FileInputStream(String.format("Scan%05d.data", scanNumber));
您正在写入外部存储:
new File(Environment.getExternalStorageDirectory(), filename);
您正在阅读:
new ObjectInputStream(new FileInputStream("Scan%05d.data"));
如果要使用外部存储,请在两个地方都使用外部存储,而不仅仅是一个。