在应用程序内部的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();
}
答
可能有许多事情引起的:
- 检查外部存储是试图写入之前,可用和可写的。
- 请勿使用String dirName =“/ sdcard/TEST”;改为使用Environment.getExternalStorageDirectory()或Context.getExternalFilesDir()。
This page有一些真正有用的提示,用于正确访问SD卡。
+0
我能创建使用ASTRO目录(手动)的SD卡。那意味着外部存储是可用和可写的? – komal 2011-08-03 06:49:14
这取决于。在某些设备上它是'/ sdcard',而在其他设备上则是'/ mnt/sdcard'。但是你的建议技术适用于所有情况。 – laalto 2011-06-10 07:30:09
好吧,我从来没有在'/ sdcard'上看过它。感谢提示。 – 2011-06-10 07:37:11
谢谢你的支持。我试着用 文件mydirectory中=新的文件(Environment.getExternalStorageDirectory(),“我的目录); ,但应用程序仍然无法在SD卡上创建目录 时的代码相同的费用相加作为实现而。独立的应用程序(它只是创建一个目录),它成功地创建一个。这是一个非常令人费解的情况。请分享你的见解。 – komal 2011-06-24 06:36:19