现在我在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'等等
答案 0 :(得分:1)
我的路径就像'/ mnt / sdcard / Music / blabla'
不使用硬编码路径,因为这些路径可能(并且会)因设备型号或OS版本而异。你有Environment类中的方法来获取外部存储的根文件夹,你应该像getExternalStorageDirectory()
那样使用它修改强>
。我需要获得内容文件夹的文件夹,如音乐,DCIM,下载,但在智能手机的内部存储
如果您想使用DownloadManager或外部相机应用等系统功能,则无法拥有“私有”DCIM,因为这些应用无法写入您的私人存储空间。因此,您可以自己下载/拍照 - 然后您可以随时保存文件,或者使用现有的文件,以及所有优点和缺点。
名称“外部”/“内部”现在有点误导,所以不要太过于字面意思。