InputStream的available()方法可以获取要读取文件的长度,File 类也有一个方法获取文件长度的能体会()方法,所以可通过这两个方法获得文件长度后,就可以定义一个与文件长度一样的数组来存放读取的数据,这样就可以避免循环。表面上看是简化了代码,但是这是一种温柔的陷阱,我们知道Jvm虚拟机(默认情况下)在内存中只开辟了64M左右的空间。当文件的内容非常大的时候,就可能出现内存溢出的问题,这是相当危险的。所以,不建议这样做。还是建议定义一个1024整数倍长度的byte(字节流)或char(字符流)数组来接收数据,在运用循环的方式来接收数据比较安全。
|