黑马程序员技术交流社区
标题:
IO中遇到的小疑问
[打印本页]
作者:
王红潮
时间:
2012-9-20 20:58
标题:
IO中遇到的小疑问
在书上看了一段代码,读取一个文件,并返回字节数组,有些小疑问:
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[];的长度也就越大,如果超出了虚拟机设定的范围,会内存溢出吧,这种写法会不会有问题?
作者:
梁志冰
时间:
2012-9-20 22:08
你的代码很奇怪!稍后研究一下。
如果文件过大,首先,字节数组的长度会比文件长度小,导致文件丢失。而且有内存溢出的危险。
作者:
梁志冰
时间:
2012-9-20 22:08
你的代码很奇怪!稍后研究一下。
如果文件过大,首先,字节数组的长度会比文件长度小,导致文件丢失。而且有内存溢出的危险。
作者:
李健_8
时间:
2012-9-20 23:36
你为什么不使用缓冲流
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2