- public class InputStreamTest {
- private static final String FILENAME="E:\\电影\\[高清电影]阿甘正传.1994.美国.中文字幕.1280x720.rmvb";
- public static void main(String[] args) throws IOException {
- long l1 = readByBufferedInputStream();
- long l2 = readByInputStream();
- System.out.println("通过BufferedInputStream读取用时:"+l1+";通过InputStream读取用时:"+l2);
- }
- public static long readByInputStream() throws IOException {
- InputStream in=new FileInputStream(FILENAME);
- byte[] b=new byte[8192];
- int l=0;
- long start=System.currentTimeMillis();
- while(in.read(b,0,8192)!=-1){
- }
- long end=System.currentTimeMillis();
- return end-start;
- }
- public static long readByBufferedInputStream() throws IOException {
- BufferedInputStream in=new BufferedInputStream(new FileInputStream(FILENAME));
- byte[] b=new byte[8192];
- int l=0;
- long start=System.currentTimeMillis();
- while(in.read(b,0,8192)!=-1){
- }
- long end=System.currentTimeMillis();
- return end-start;
- }
- }
复制代码 以上代码,一共有两个方法,第一个就是用InputStream读取数据的,第二个就是用BufferedInputStream读取数据的,其他的代码都一样,至于缓冲数组大小为8192是因为BufferedInputStream里面的默认数组大小就是8192的。我那个文件大小是1.46G。
但是运行结果很令我诧异:
通过BufferedInputStream读取用时:705;通过InputStream读取用时:669
通过BufferedInputStream读取用时:727;通过InputStream读取用时:690
通过BufferedInputStream读取用时:721;通过InputStream读取用时:689
但是结果BufferedInputStream用时高于InputStream。虽然差的不多,但是在我映像中,BufferedInputStream应该明显小于InputStream的啊。
这个是为什么呢?BufferedInputStream的缓冲功能又是在什么时候用的呢?
|