在应用程序内部的SD卡中创建一个目录

问题描述:

我想在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); 


     } 


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

} 

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

可能有许多事情引起的:

  1. 检查外部存储是试图写入之前,可用和可写的。
  2. 请勿使用String dirName =“/ sdcard/TEST”;改为使用Environment.getExternalStorageDirectory()Context.getExternalFilesDir()

This page有一些真正有用的提示,用于正确访问SD卡。

+0

我能创建使用ASTRO目录(手动)的SD卡。那意味着外部存储是可用和可写的? – komal 2011-08-03 06:49:14