本帖最后由 吴扬 于 2012-6-28 00:39 编辑
下面是两段复制图片文件的代码,第一个没有用到缓冲区,而第二个则用到了- public static void copyFile() throws IOException
- {
- FileInputStream fis = null;
- FileOutputStream fos = null;
-
- fis = new FileInputStream("d:\\russel.jpg");
- fos = new FileOutputStream("d:\\russel_copy.jpg");
-
- byte[] buf = new byte[1024];
-
- int len = 0;
-
- while((len = fis.read(buf)) != -1)
- {
- fos.write(buf, 0, len);
- }
- }
复制代码 第一种方法没有用到缓冲区流对象,复制一个大小为208k的图片文件,需要的时常每次大概在4ms左右- public static void copyFileByBuf() throws IOException
- {
- BufferedInputStream bufferedFis = new BufferedInputStream(new FileInputStream("d:\\russel.jpg"));
- BufferedOutputStream bufferedFos = new BufferedOutputStream(new FileOutputStream("d:\\russel_copy.jpg"));
-
-
- int ch = 0;
-
- while((ch = bufferedFis.read()) != -1)
- {
- bufferedFos.write(ch);
- }
- }
复制代码 第二种方式则用到了缓冲区流对象,复制一个相同的图片文件,但是每次运行的结果都在13ms左右,为什么会出现这种情况?怎么使用缓冲区的流对象的效率反而降低了呢?
|