Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android mkdir失败:EBUSY(设备或资源忙)_Android - Fatal编程技术网

Android mkdir失败:EBUSY(设备或资源忙)

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");

我已经写了一些代码在内部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

如何解决此问题。

您可以尝试使用
环境。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" />