新文件(路径)总是在android上实际创建一个文件?

时间:2013-04-11 11:59:46

标签: java android file android-file

我正在尝试检查文件是否在android sd卡上退出...所以我这样做:

File f=new File(sdpath + "/" + DATABASE_NAME); //   
if(!f.exits()) {
...create new file..
}
else {
...do something...
}

每次这实际上都会在SD卡上创建目录或文件。

我知道它不存在,并且当新文件被执行时,它被创建并且它不应该?

我在google上读到新文件并没有在文件系统上创建实际文件,但在我的情况下它确实...

检查文件/目录是否退出而不使用新文件的任何替代方法。

编辑1:嗯,我只想添加(4年后:) :)这个问题只发生在我写这篇文章时的两个设备上,再也没有,其中一个是HTC Desire C with android 4.0,另一个是华为与android 2.x,不能再记得了。

4 个答案:

答案 0 :(得分:3)

出于某种奇怪的原因,事实证明新文件每次都创建了一个目录......

而不是检查if (!f.exists()),我将其更改为检查if (!f.isFile())

在这种情况下,我创建一个新文件,它运行良好,下次我运行它时,文件已经在SD卡上了...

答案 1 :(得分:2)

有效的方式几乎与你的一样:

File f = new File(Environment.getExternalStorageDirectory(), "a directory");
if(!f.exists){
// do something
}

并检查文件是否存在几乎相同:

File f = new File(Environment.getExternalStorageDirectory() + "/a directory/" + "a file");
if(!f.exists){
// do something
}

我希望它可以帮助你,因为它没有在我的应用程序中创建文件或目录。它只是检查了路径。

答案 2 :(得分:0)

这可能会对您有所帮助,请尝试

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                    //handle case of no SDCARD present
                } else {
                    File file = new File(Environment.getExternalStorageDirectory()
                         +File.separator
                         +"myDirectory" //folder name
                         +File.separator
                         +"myFile.example"); //file name

                    if(file.exists()){
                        Toast.makeText(MainActivity.this, "Not Create ", 12).show();
                    }else{
                        file.mkdirs();
                        Toast.makeText(MainActivity.this, "Create ", 12).show();
                    }

                }

答案 3 :(得分:0)

试试这个

    File[] files = filedir.listFiles();
    for (File file2 : files) {
        if (file2.isDirectory()) {
            Toast.makeText(this, "directory", Toast.LENGTH_LONG).show();
        } else {  
            if (file2.getName().equals(DATABASE_NAME)) {
                Toast.makeText(this, "File found",Toast.LENGTH_LONG).show();
            }
          else{Toast.makeText(this, "File not found",Toast.LENGTH_LONG).show();
        }
}
}