[英]Permission denied when writing a RandomAccessFile
编辑:我的问题不是重复的Android权限不起作用,即使我已经声明了它,因为我在运行时要求权限
Edit2:将文件写入Environment.getexternalstoragedirectory
是可以的,但是对sdcard会给出该错误
嘿,我正在尝试使用RandomAccessFile
将mp3文件写入sdcard,这是我的代码:
public void save(String newFilename) throws IOException, NotSupportedException {
if (file.compareTo(new File(newFilename)) == 0) {
throw new IllegalArgumentException("Save filename same as source filename");
}
RandomAccessFile saveFile = new RandomAccessFile(newFilename, "rw");
try {
if (hasId3v2Tag()) {
saveFile.write(id3v2Tag.toBytes());
}
saveMpegFrames(saveFile);
if (hasCustomTag()) {
saveFile.write(customTag);
}
if (hasId3v1Tag()) {
saveFile.write(id3v1Tag.toBytes());
}
} finally {
saveFile.close();
}
}
private void saveMpegFrames(RandomAccessFile saveFile) throws IOException {
int filePos = xingOffset;
if (filePos < 0) filePos = startOffset;
if (filePos < 0) return;
if (endOffset < filePos) return;
RandomAccessFile randomAccessFile = new RandomAccessFile(this.file.getPath(), "r");
byte[] bytes = new byte[bufferLength];
try {
randomAccessFile.seek(filePos);
while (true) {
int bytesRead = randomAccessFile.read(bytes, 0, bufferLength);
if (filePos + bytesRead <= endOffset) {
saveFile.write(bytes, 0, bytesRead);
filePos += bytesRead;
} else {
saveFile.write(bytes, 0, endOffset - filePos + 1);
break;
}
}
} finally {
randomAccessFile.close();
}
}
我在logcat
遇到此错误:
java.io.FileNotFoundException: /storage/15D5-14F7/Musics/Music/Dream On.mp3: open failed: EACCES (Permission denied)
但是我有读写权限,为什么会这样?
如果您写入此权限,则可以访问该权限。 但是,在棉花糖之上,您必须包括如何处理运行时权限。
这是解决方案链接。
https://blog.xamarin.com/requesting-runtime-permissions-in-android-marshmallow/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.