Java 检查文件是否存在?file.exists()返回值始终为false

Java 检查文件是否存在?file.exists()返回值始终为false,java,android,file-exists,Java,Android,File Exists,我在检查文件是否存在时遇到问题这是我的简单代码: File myfile = new File ("SecretFile"); if(myfile.exists(){ TextView mytxt = (TextView)findViewById(R.id.textView); mytxt.setText("Loaded successfully"); }

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

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中创建文件

File myfile = new File ("SecretFile");
这句话在Android上毫无意义

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

没有。欢迎您将
SecretFile
存储在或上,但您必须创建一个指向这些位置的
File
对象(例如,
File myfile=new File(getFilesDir(),“SecretFile”);

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

File myfile = new File ("SecretFile");

你不能。最接近的匹配是我在上面代码片段中的
getFilesDir()
,它将把您的文件放在外部存储上的
Android/data/com.mypackage.myapp/files/SecretFile
中。另外,正如Der Golem所指出的,您需要API级别4到18的
写入外部存储
权限。

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

这就是为什么你的返回数据总是错误的原因


可以帮助您。

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