在书上看了一段代码,读取一个文件,并返回字节数组,有些小疑问:- private byte[] getBytes(String filename) throws IOException{
- File file = new File(filename);
- long len = file.length();
- byte[] raw = new byte[(int)len]; //这里如果强转成int类型,如果文件过大,会不会丢失
- try(
- FileInputStream fin = new FileInputStream(file))
- {
- int r = fin.read(raw);
- if(r != len)
- throw new IOException("无法读取全部文件 :" + r + " != " + len);
- return raw;
- }
- }
复制代码 long len = file.length();
byte[] raw = new byte[(int)len]; //这里如果强转成int类型,如果文件过大,会不会丢失
到现在才知道,数组的长度最大就是Integer.MAX_VALUE,这里如果将long类型强转成int类型,如果文件过大,应该会丢失
如果文件过大,new byte[];的长度也就越大,如果超出了虚拟机设定的范围,会内存溢出吧,这种写法会不会有问题?
|
|