【发布时间】:2016-04-02 12:08:34
【问题描述】:
当尝试将InputStream 转换为字节数组以了解上传文件的大小时。我能够获得大小,但InputStream.read() 变为-1。如何在将文件写入服务器之前检查文件大小?
我当前的代码给了我 size ,但 InputStream 到达末尾。
private static byte[] readFully(InputStream input) throws IOException
{
byte[] buffer = new byte[8192];
int bytesRead;
byte []bytes=null;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = input.read(buffer)) != -1)
{
System.out.println("Buffer is "+input.read(buffer));
output.write(buffer, 0, bytesRead);
}
bytes=output.toByteArray();
output.close();
return bytes;
}
【问题讨论】:
-
是否可以获得
java.io.File实例而不是InputStream? -
不。实际上我正在获取 inputStream 并且我在 Oracle 应用程序框架上使用它,其中 BlobDomain 类仅返回 inputStream。
-
BlobDomain 有一个 getLength 方法
-
您为每个循环迭代调用了两次
input.read(buffer),但只写了一次output。您在while语句本身中调用read(),返回值在bytesRead中。在System.out.println()语句中再次调用read(),但丢弃结果。
标签: java file io inputstream