我已编写代码来在内部sd中创建新文件夹,就像这样......
File MainDirectory = new File("/mnt/sdcard/app/");
if(!MainDirectory.exists()){
File DBDirectory = new File("/mnt/sdcard/app/database");
File ProPicDirectory = new File("/mnt/sdcard/app/profilephoto");
File ProPicTempDirecctory=new File("/mnt/sdcard/app/profilephoto/temp");
File ReportPicDirectory = new File("/mnt/sdcard/app/reportphoto");
File ReportThumbPicDirectory = new File("/mnt/sdcard/app/reportphoto/thumb");
MainDirectory.mkdirs();
DBDirectory.mkdir();
ProPicDirectory.mkdir();
ProPicTempDirecctory.mkdir();
ReportPicDirectory.mkdir();
ReportThumbPicDirectory.mkdir();
}
这个代码完美地工作了两次,即使我通过文件管理器删除文件夹并删除应用程序,当我重新安装它工作正常。第三次发生此错误后....
I/System.out: mkdir failed: EBUSY (Device or resource busy) path = /mnt/sdcard/app
I/System.out: mkdir failed: EBUSY (Device or resource busy) path = /mnt/sdcard/app/database
I/System.out: mkdir failed: EBUSY (Device or resource busy) path = /mnt/sdcard/app/profilephoto
I/System.out: mkdir failed: EBUSY (Device or resource busy) path = /mnt/sdcard/app/profilephoto/temp
I/System.out: mkdir failed: EBUSY (Device or resource busy) path = /mnt/sdcard/app/reportphoto
I/System.out: mkdir failed: EBUSY (Device or resource busy) path = /mnt/sdcard/app/reportphoto/thumb
如何解决此问题。?
答案 0 :(得分:0)
您可以尝试使用Environment.getExternalStorageDirectory()
。
File MainDirectory = new File(Environment.getExternalStorageDirectory().toString()+ "/app");
if(!MainDirectory.exists()){
File DBDirectory = new File(MainDirectory+"/database");
File ProPicDirectory = new File(MainDirectory+"/profilephoto");
File ProPicTempDirecctory = new File(ProPicDirectory+"/temp");
File ReportPicDirectory = new File(MainDirectory+"/reportphoto");
File ReportThumbPicDirectory = new File(ReportPicDirectory+"/thumb");
MainDirectory.mkdirs();
DBDirectory.mkdir();
ProPicDirectory.mkdir();
ProPicTempDirecctory.mkdir();
ReportPicDirectory.mkdir();
ReportThumbPicDirectory.mkdir();
}
这对我来说很好。
希望它有所帮助。
答案 1 :(得分:0)
确保您拥有写入和读取存储空间的权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
再次检查。
答案 2 :(得分:0)
所以事情是文件或目录被系统或其他进程锁定。
我是如何得出这个结论的?
好吧,在我的应用程序的上一个版本中,我在根目录中创建了一个包含数据文件(包括媒体文件)的隐藏目录。然后我决定不让它隐藏起来。我的测试设备突然崩溃了。我将文件夹改回隐藏状态,然后又恢复了工作。
因此,如果没有进程访问该目录,可能是Android系统扫描媒体文件并让Google知道什么。也许一个.nomedia
文件可以解决这个问题(我没试过),但如果你对资源没有控制权,你就不会再这么做了。