Android mkdir失败:EBUSY(设备或资源忙)
我已经写了一些代码在内部sd中创建新文件夹,如下所示Android mkdir失败:EBUSY(设备或资源忙),android,Android,我已经写了一些代码在内部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 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
如何解决此问题。您可以尝试使用
环境。getExternalStorageDirectory()
这对我来说很好
希望能有帮助 确保您拥有写入和读取存储的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
再次检查。所以问题是文件或目录被系统或其他进程锁定 我是怎么得出这个结论的 在我的应用程序的上一个构建中,我在根目录中创建了一个包含数据文件(包括媒体文件)的隐藏目录。然后我决定不把它藏起来。突然,我的测试设备开始崩溃。我把文件夹改回了隐藏,它又工作了
因此,如果没有一个进程访问该目录,那么可能是Android系统扫描媒体文件并执行谷歌知道的操作。也许一个
.nomedia
文件可以解决这个问题(我没有尝试),但是如果你无法控制资源,那么你就倒霉了。你的目的是什么?你在代码中的任何地方删除文件夹吗?没有。。。我通过file Explorer删除了文件夹。请注意,您使用了所有这些硬编码路径。此外,您不应盲目地调用mkdir或mkdirs,而应仅在目录不存在时调用。使用.exists()进行检查。此外,您应该检查mkdir的返回值,因为它可能无法创建目录。如果是,则不要继续,而是显示一个祝酒词并返回。@greenapps尝试停留在主题上(请?)否仍然相同。您是否在任何地方删除文件夹?如果是,则当系统尝试再次打开现有文件(如果您已删除该文件)时会出现此问题,因此您需要做的只是在删除之前重命名文件夹。如果在删除文件夹或文件之前对其进行重命名,系统将无法再次尝试打开现有文件或要再次保存的打开文件(或类似文件)。@pulkit我一句话也不相信。@pulkit我确认您的想法在LG-D855上对我有效。如果删除前文件夹不是空的,则删除后无法重新创建同名文件夹。但是,如果我用一个随机名称重命名它,然后删除它,它就可以正常工作了。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />