繁体   English   中英

java.io.FileNotFoundException在内部存储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);
}

感谢您的任何帮助。

您使用名称写入文件

String.format("Scan%05d.data", scanNumber)

但是你用文件读取了文件

"Scan%05d.data"

更改对象输入流创建或使用其他方法创建文件名。

new ObjectInputStream(new FileInputStream(String.format("Scan%05d.data", scanNumber));

使用open openFileOutput和openfileInput方法而不是打开新的输入和输出流。

http://developer.android.com/intl/es/guide/topics/data/data-storage.html#filesInternal

此外,您正在尝试将文件保存在ExternalStorage文件夹中。 Environment.getExternalStorageDirectory() 写入该文件夹需要AndroidManifest上的Android权限

您正在写入外部存储:

new File(Environment.getExternalStorageDirectory(), filename);

你无处可读:

new ObjectInputStream(new FileInputStream("Scan%05d.data"));

如果要使用外部存储,请在两个位置使用外部存储,而不仅仅使用外部存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM