重新启动应用程序后,Android内部文件似乎消失了

时间:2016-07-25 17:46:47

标签: java android

我是Android的新手,目前正试图在一点点"游戏中保存一些文件"应用程序我正在学习,但文件似乎只在应用程序关闭之前一直存在。我跑的时候:

file.exists()
file.isFile()

或任何类似的方法,它们在重新启动应用程序时总是返回false。

这是我在网上找到的保存文件的方法:

 public void writeToFile(String data, String filePath, Context context){
    File file = new File(context.getFilesDir(), filePath);

    if(!file.exists()){
        try{
            file.createNewFile();
        }catch(IOException e) {
            e.printStackTrace();
            Log.e("Exception", "File couldn't be created");
        }
    }

    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput(filePath, Context.MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    }
}

我一直在谷歌搜索试图找到解决方案,但没有一个工作。它似乎在应用程序运行时起作用,因为我可以编写和读取文件,但是在重新启动应用程序时,它无法找到文件。 (file.exists()返回false)

2 个答案:

答案 0 :(得分:1)

我只花了一个小时来追踪这个错误,事实证明这是因为在项目属性的“部署”下设置了“清除用户数据”标志。我正在将Visual Studio 2017与Android一起使用NVIDIA CodeWorks。

答案 1 :(得分:0)

我假设您正在尝试写入内部存储空间?如果没有,并且您希望访问外部存储空间,我建议您查看以下Android.com上的指南。

https://developer.android.com/guide/topics/data/data-storage.html#filesInternal

如果此您尝试写入的内部存储,则需要确保将正确的上下文传递给该方法。例如,如果您从MainActivity类运行并且该方法包含在该类中,则您的调用将类似于:

writeToFile("一些数据"," aFile.txt", MainActivity.this