【发布时间】:2016-08-28 05:31:06
【问题描述】:
我正在编写代码来验证最大文件大小。
public static void main(String[] args) throws IOException {
final InputStream inputStream = new FileInputStream(new File("/path/to/image.jpg"));
System.out.println("initial: " + inputStream.read());
int arr = IOUtils.read(inputStream, new byte[2000001]);
if (arr == 2000001) {
System.out.println("file size greater than limit");
}
System.out.println("after: " + inputStream.read());
}
输出
initial: 255
file size greater than limit
after: 21
问题是当 InputStream 被传递给 IOUtils.read() 时会发生什么?展望未来,我必须将 InputStream 保存为图像,当我将相同的 InputStream 引用传递给 s3 存储桶的 save 方法 上传方法时,损坏的图像会被保存。谁能告诉我这是怎么回事?
【问题讨论】:
-
读取位置增加。
-
@tkausl:那么使用 IOUtils.read() 检查文件大小是否正确?
-
如果您仍然要阅读内容,为什么要先通读以找到大小?只需加载数据并检查加载的大小。
-
@tkausl:我不想将其转换为 java.io.file 以检查大小。我必须通过 InputStream 将图像文件上传到 s3 存储桶。 (更新了我的问题)。
标签: java inputstream apache-commons-io