检查文件是不是存在? 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的主要内容,如果未能解决你的问题,请参考以下文章
File.Exists判断文件是不是存在总是返回False?