使用uri将文件读取到字节数组

时间:2017-01-23 08:03:43

标签: java android

我需要使用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();
}

但我无法理解如何将其修改为以字节为单位读取。

2 个答案:

答案 0 :(得分:1)

正如pskink所说,你的主要问题是你将InputStream包装在Reader中。 Reader旨在将字节解码为字符,这可以通过定义来解决您想要避免的问题。您需要分配一个缓冲区并使用InputStream的读取方法来填充它。

请记住,在处理已接收的数据时,您必须知道传入的字节数或多次读取。

或者,您可以使用read方法获取int,检查流是否已结束,然后将该int转换为一个字节并逐个处理。但通常情况下,你想使用缓冲区,因为它更快。

答案 1 :(得分:0)

URL url = new URL("http://www.craftychild.com/image-files/kids-paint-center.jpg");
BufferedImage image = ImageIO.read(url);
File file = new File("D:\\picture\demo.jpg");
ImageIO.write(image, "jpg",file);