我无法在Android中写入/ mnt / sdcard2

时间:2017-03-06 09:14:48

标签: java android ioexception android-external-storage

现在我在Andoid中制作了一些版本的文件管理器。 我的许可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

当我将新文件写入 / mnt / sdcard (外部Stroage)时,一切都很好。 但是当我将新文件写入 / mnt / sdcard2 (内部存储)时,我得到的IOException就像 打开失败:EACCES(权限被拒绝) 我的完整代码:

try {
            File existingFile = new File(path);
            File newFile = new File(newPath);
            if (!newFile.exists()) {
                if (!isFolder)
                {
                    newFile.createNewFile();
                }

            } 

            if (isFolder) {
                FileUtils.copyDirectory(existingFile, newFile);
            }
            else
            {
                FileUtils.copyFile(existingFile, newFile);
            }

        } catch (IOException e) {
            result = 1;
        }

当我测试我的应用程序时,我使用真实设备。 我的路径就像'/ mnt / sdcard / Music / blabla'等等

1 个答案:

答案 0 :(得分:1)

  

我的路径就像'/ mnt / sdcard / Music / blabla'

使用硬编码路径,因为这些路径可能(并且会)因设备型号或OS版本而异。你有Environment类中的方法来获取外部存储的根文件夹,你应该像getExternalStorageDirectory()

那样使用它

修改

  

。我需要获得内容文件夹的文件夹,如音乐,DCIM,下载,但在智能手机的内部存储

如果您想使用DownloadManager或外部相机应用等系统功能,则无法拥有“私有”DCIM,因为这些应用无法写入您的私人存储空间。因此,您可以自己下载/拍照 - 然后您可以随时保存文件,或者使用现有的文件,以及所有优点和缺点。

名称“外部”/“内部”现在有点误导,所以不要太过于字面意思。