我需要使用 uri 来加载文件。 uri 无法转换为绝对路径(外部卷)。
我找到了例子:
private String readTextFromUri(Uri uri) throws IOException {
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
fileInputStream.close();
parcelFileDescriptor.close();
return stringBuilder.toString();
}
但我不明白如何修改它以读取字节。
最佳答案
正如 pskink 所说,您的主要问题是您将 InputStream 包装在 Reader 中。 Reader 的目的是将字节解码为字符,根据定义,这是您想要避免的。您需要分配一个缓冲区并使用InputStream的read方法来填充它。
请记住,您必须知道传入字节数或在处理已接收到的数据时多次读取。
或者,您可以使用 read 方法获取一个 int,检查流是否已结束,然后将该 int 转换为一个字节并一一处理。但通常,您希望使用缓冲区,因为这样更快。
关于java - 使用 uri 将文件读取到字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41801605/