EACCES 权限被拒绝 找不到文件
EACCES Permission denied file not found
我已经挂载了外接SD卡(7.9GB)。以下是我用来将原始音频文件从我的项目传输到 SD 卡的代码。我正在使用 JellyBean 4.2 版本。我可以使用 fileManager 应用程序来实现这一点。所以sdcard肯定是可写的
File storagedir = new File("/mnt/extsd");
if (storagedir.isDirectory()) {
String[] dirlist = storagedir.list();
for (int i = 0; i < dirlist.length; i++) {
System.out.println(dirlist[i]);
}
File file = new File(storagedir, "Audio.mp3");
try {
InputStream is = getResources().openRawResource(R.raw.audio);
OutputStream os = new FileOutputStream(file);
byte[] data = new byte[is.available()];
is.read(data);
os.write(data);
is.close();
os.close();
Toast.makeText(getApplicationContext(), "Saved!", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但是我得到了找不到文件的异常:
java.io.FileNotFoundException: mnt/extsd/Audio.mp3 openfailed:
EACCES (Permission Denied)
理想情况下,您不应该使用这样的硬编码路径。您应该使用来自 http://developer.android.com/reference/android/os/Environment.html 的字符串。
这样做的主要原因是因为这些字符串可以更改,并且由平台决定 return 正确的值。
所以,事实证明我犯了一个非常愚蠢的错误。路径应该是:
File storagedir = new File("/mnt/extsd/");
I missed the 2nd backslash after extsd.
我已经挂载了外接SD卡(7.9GB)。以下是我用来将原始音频文件从我的项目传输到 SD 卡的代码。我正在使用 JellyBean 4.2 版本。我可以使用 fileManager 应用程序来实现这一点。所以sdcard肯定是可写的
File storagedir = new File("/mnt/extsd");
if (storagedir.isDirectory()) {
String[] dirlist = storagedir.list();
for (int i = 0; i < dirlist.length; i++) {
System.out.println(dirlist[i]);
}
File file = new File(storagedir, "Audio.mp3");
try {
InputStream is = getResources().openRawResource(R.raw.audio);
OutputStream os = new FileOutputStream(file);
byte[] data = new byte[is.available()];
is.read(data);
os.write(data);
is.close();
os.close();
Toast.makeText(getApplicationContext(), "Saved!", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但是我得到了找不到文件的异常:
java.io.FileNotFoundException: mnt/extsd/Audio.mp3 openfailed:
EACCES (Permission Denied)
理想情况下,您不应该使用这样的硬编码路径。您应该使用来自 http://developer.android.com/reference/android/os/Environment.html 的字符串。
这样做的主要原因是因为这些字符串可以更改,并且由平台决定 return 正确的值。
所以,事实证明我犯了一个非常愚蠢的错误。路径应该是:
File storagedir = new File("/mnt/extsd/");
I missed the 2nd backslash after extsd.