Android文件不存在(但同时也存在!)

时间:2014-01-18 04:49:48

标签: java android file

我有一个Android程序,它创建一个文件并在if语句中检查它。这样做的目的是能够在应用程序中保存值。这个应用就像这样。我将值放在手机上,然后我将应用程序崩溃以重置它。值保存在文件中。当我再次打开应用程序时,它应该跳过允许我输入值的屏幕。当我这样做时,该应用程序就好像该文件从未存在过。在调试时,我发现该文件确实已创建。它应该是在内部存储上创建的,但我还添加了外部存储写入权限以防万一。有人可以帮助我或给我一个替代方案吗?

File file = new File("user.txt");
    if (file.exists())
    {
        ...
    }

4 个答案:

答案 0 :(得分:1)

        File f = new File(); 

它只是在运行时创建文件的文件实例。您需要使用以下代码来创建文件。

        File file = new File("data/data/your package name/test.txt");
        if (!file.exists()) {
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }

答案 1 :(得分:0)

尝试给它一个完整的路径,不仅仅是文件名,就像这个

File mFile = new File("/sdcard/mysdfile.txt");

答案 2 :(得分:0)

assets文件夹仅在运行时读取。

来自http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

  

提示:如果要在编译时在应用程序中保存静态文件,请将该文件保存在项目res / raw /目录中。你可以用openRawResource()打开它,传递R.raw。资源ID。此方法返回一个可用于读取文件的InputStream(但您无法写入原始文件)。

使用SharedPreferences来保存原始数据类型。

答案 3 :(得分:0)

        Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

                File direct = new File(Environment.getExternalStorageDirectory() + "/Folder/Filename");
                if (!direct.exists()) {
                    direct.mkdir(); // directory is created;
                }
                if (isSDPresent) {
                    Path = Environment.getExternalStorageDirectory() + "/Folder/Filename";

                } else {
                    Path = getFilesDir() + "/Folder/Filename";
                }
        File f = new File(Path);
      if(!file.exists()) {
       try {
                        file.createNewFile();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
}