如何以字节数组读取大型zip文件的数据?
如何将一个大的zip文件读取为字节数组?
您的代码至少有一个错误:
file. Length()
无法提供您想要的结果。
(实际上,可能根本无法编译)
您想要的应该是file.length()
关于您的问题:
只有当您要读取的文件超过2,147,483,647字节时,才会获得负数的数组大小。
在这种情况下,将int强制转换为负值。
另外:即使您的数组足够大以容纳所有数据,也不能保证is.read(data);
将一次性读取所有数据。您需要一个循环。
最后:记得使用try-with-resources关闭InputStream,并使最终变量final。
这个方法如何?:
private static byte[] loadFileAsByteArray(final String path) throws IOException { final File file = new File(path); try (final InputStream is = new FileInputStream(file)) { final byte[] data = new byte[(int) file.length()]; // Cast -> -ve Array-Size? int off = 0; int len; while (-1 != (len = is.read(data, off, data.length - off))) { off += len; } return data; } }