刚开始用java,作为之前C语言的重度使用者,发现以前熟悉的文件读取file.read()在java.io.File类里找不到了。替代之的是java.io.InputStream, InputStream为一个I/O操作的抽象类,其中FileInputStream:read实现了读取文件的方法
File f = new File(fileName); InputStream in = new FileInputStream(f); byte data[] = new byte[1024]; int nReadCount = 0; while (nReadCount < 1024) { nReadCount += in.read(data, nReadCount, 1024 - nReadCount); }
上面的例子中, FileInputStream:read并不保证一次性能读完1024字节,因此加了个while循环。
到此为止,这就完成了和C语言里file.read()的全部功能。
一个字节一个字节的读,未免太C-Style了,当然java不止这么多,java提供了一个包装类BufferedInputStream,此类的read方法内部实现了缓存,不管读多少字节,性能影响都不会很大:
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f)); in.read(); byte data[] = new byte[1024]; in.read(data);
原文:http://my.oschina.net/caohong/blog/324079