2011-06-10 48 views
0

我想在SD卡上創建一個目錄,將其作爲一個單獨的活動保存在我的應用程序中。我在應用程序的onCreate()中編寫了以下代碼。它不創建目錄,雖然這個代碼工作正常,如果我嘗試作爲一個獨立的應用程序來實現它。 請爲此問題提出解決方案。在應用程序內部的SD卡中創建一個目錄

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     try{ 
      String dirName = "/sdcard/TEST"; 
      File newFile = new File(dirName); 
      newFile.mkdirs(); 
      Log.d("CaptureTest.java","Directory created"); 
      if(newFile.exists()){ 
       Log.d("capturetest.java","directory exists"); 
       if(newFile.isDirectory()){ 
        Log.d("capturetest.java","isDirectory = true"); 
       } 
       else Log.d("capturetest.java","isDirectory = false"); 
      } else 
       { 
       Log.d("capturetest.java","directory doesn't exist"); 
      } 


     } catch(Exception e){ 


      Log.d("capturetest.java","Exception creating folder " + e); 


     } 


........................................ 
.......................................... 

} 

回答

4

SD卡可能安裝在/mnt/sdcard而不是/sdcard。 但要獲得外部存儲目錄中的最安全的方法是像下面的代碼

File myDirectory = new File(Environment.getExternalStorageDirectory(), "my directory"); 
if(!myDirectory.exists()) { 
    myDirectory.mkdirs(); 
} 
+0

這取決於。在某些設備上它是'/ sdcard',而在其他設備上則是'/ mnt/sdcard'。但是你的建議技術適用於所有情況。 – laalto 2011-06-10 07:30:09

+0

好吧,我從來沒有在'/ sdcard'上看過它。感謝提示。 – 2011-06-10 07:37:11

+0

謝謝你的支持。我試着用 文件mydirectory中=新的文件(Environment.getExternalStorageDirectory(),「我的目錄); ,但應用程序仍然無法在SD卡上創建目錄 時的代碼相同的費用相加作爲實現而。獨立的應用程序(它只是創建一個目錄),它成功地創建一個。這是一個非常令人費解的情況。請分享你的見解。 – komal 2011-06-24 06:36:19

0

可能有許多事情引起的:

  1. 檢查外部存儲是試圖寫入之前,可用和可寫的。
  2. 請勿使用String dirName =「/ sdcard/TEST」;改爲使用Environment.getExternalStorageDirectory()Context.getExternalFilesDir()

This page有一些真正有用的提示,用於正確訪問SD卡。

+0

我能創建使用ASTRO目錄(手動)的SD卡。那意味着外部存儲是可用和可寫的? – komal 2011-08-03 06:49:14

相關問題