检查文件是不是存在? file.exists() 总是返回 false

Posted

技术标签:

【中文标题】检查文件是不是存在? file.exists() 总是返回 false【英文标题】:Check if file exists or not? file.exists() return always false检查文件是否存在? file.exists() 总是返回 false 【发布时间】:2015-10-20 11:19:42 【问题描述】:

我在检查文件是否存在时遇到问题,这是我的简单代码:

File myfile = new File ("SecretFile");

            if(myfile.exists()

                TextView mytxt = (TextView)findViewById(R.id.textView);
                mytxt.setText("Loaded successfully");

            
            else
                try 
                    myfile.createNewFile();
                 catch (IOException e) 
                    e.printStackTrace();
                

                TextView mytxt = (TextView)findViewById(R.id.textView);
                mytxt.setText("Not loaded,reboot the application");
            

我正在做一个简单的游戏,我需要检查第一个应用程序运行,因为当应用程序运行时,它会从文件中加载所有变量,但在第一次运行时没有文件,因此应用程序崩溃。 我还有另一个问题文件“SecretFile”在哪里? 如何在 android/data/com.mypackage.myapp/SecretFile 中创建文件?

【问题讨论】:

添加此权限android.permission.WRITE_EXTERNAL_STORAGE 【参考方案1】:

在 android 中创建文件时,您需要添加创建文件的路径。如果您无法满足其要求,则不会创建文件。

这就是为什么你的返回数据总是假的原因。

This link可以帮到你。

【讨论】:

【参考方案2】:
File myfile = new File ("SecretFile");

该声明在 Android 上没有任何意义。

我还有一个问题,文件“SecretFile”在哪里?

无处可去。欢迎您将SecretFile 存储在internal storage 或external storage 上,但您必须通过创建指向这些位置的File 对象(例如File myfile = new File(getFilesDir(), "SecretFile");)来做到这一点。

如何在 Android/data/com.mypackage.myapp/SecretFile 中创建文件?

你不能。最接近的匹配是use getExternalFilesDir(null),我在上面的代码sn-p中有getFilesDir(),这会将您的文件放在外部存储上的Android/data/com.mypackage.myapp/files/SecretFile。此外,正如 Der Golem 所说,您需要 API 级别 4 到 18 的 WRITE_EXTERNAL_STORAGE 权限。

【讨论】:

your file in Android/data/com.mypackage.myapp/files/SecretFile。那是一条不存在的路径。它应该在前面加上/storage/0/ 或类似的东西。 @greenapps:我假设 OP 正在通过 USB 连接查看外部存储,并且指的是从那里看到的路径,我试图在我的散文为 OP 简化事情。 getExternalFilesDir(null) 将根据代码处理设置正确的位置。如果您正在使用其他东西(例如,DDMS 文件资源管理器,adb shell)检查外部存储,那么是的,OP 和我引用的路径将位于外部存储的根目录下该设备或模拟器。 感谢@CommonsWare 你帮了我很多!我是java新手,所以我不知道,也感谢其他用户! @ToastMan:“我是 Java 新手”——需要明确的是,Java 代码在 Android 上的执行方式与 Java 代码在 PC 上的执行方式有点不同。例如,File myfile = new File ("SecretFile"); 在典型的 Windows Java 程序中完全有效。此处的区别在于 Android 的工作方式略有不同,因此您必须始终从某个已识别的根位置(例如,getFilesDir()getExternalFilesDir(null))创建 File 对象。

以上是关于检查文件是不是存在? file.exists() 总是返回 false的主要内容,如果未能解决你的问题,请参考以下文章

java.io.File 中的空字符是不是对存在检查有效?

检查文件是不是存在异步?

Java file.exists() 错误

File.Exists判断文件是不是存在总是返回False?

文件存在但 java file.exists() 但返回 false

检查文件+文件夹树是不是存在的方法