我需要使用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();
}
但我无法理解如何将其修改为以字节为单位读取。
答案 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);