我正在尝试从Android Marshmallow 6.0.1中的外部SD卡读取文件,并希望在Base64中进行转换,但它正在给ENOENT(fileNotFoundException)。但我的相同代码适用于6.0及以下版本。我的代码如下:
private String convertFileToByteArray(File file) { //file path as: /storage/emulated/0/abc.doc
byte[] byteArray = null;
try {
File f=new File(file.toString());
Log.e("File EXISTs: >>",""+f.exists());
//getting error in this line,giving fileNotFoundException
FileInputStream inputStream = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024 * 11];
int bytesRead = 0;
while ((bytesRead = inputStream.read(b)) != -1) {
bos.write(b, 0, bytesRead);
}
byteArray = bos.toByteArray();
Log.e("Byte array", ">" + byteArray);
} catch (IOException e) {
e.printStackTrace();
}
return Base64.encodeToString(byteArray, Base64.NO_WRAP);
}
任何人都可以告诉我,我在这里做错了什么。 PS:我也提供运行时权限(读写)。