2013-04-11 40 views
3

我想检查的Android SD卡上的文件退出...所以我做:新文件(路径)总是实际上在android上创建一个文件?

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

每当这实际上创建了SD卡上的目录或文件。

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

我读了所有跨新文件犯规创建文件系统上的实际文件,谷歌,但对我来说它...

任何替代品,如果一个文件/目录退出检查,而无需使用新的文件。

编辑1:嗯,我只想添加(4年后:)),这个问题只出现在两个设备上,当时我正在写帖子,并再也没有,其中之一是HTC Desire C与Android 4.0和另一个是一些华为与Android 2.x,不能记得了。

回答

3

出于某种奇怪的原因,原来这个新创建的文件,每次一个目录...

而不是检查if (!f.exists()),我改成了检查if (!f.isFile())

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

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(); 
        } 

       } 
+0

我的sdpath是construc所以我基本上已经这样做了:( – JanBo 2013-04-11 12:08:05

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 
} 

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

+0

它仍然是我做的同样的事情...每当我把新的文件(东西)它创建一个名称的目录。 – JanBo 2013-04-11 12:25:55

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(); 
     } 
} 
} 
相关问题