2013-04-11 38 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(); 
     } 
} 
} 
相關問題