自己按照毕老师的视频编写了个复制文件的小程序,已经用上BufferedInputStream, BufferedOutputStream缓冲区数组等技术,可是拷贝速度依然很慢,大概700多KB/S吧,与Windows自身100+MB/S的拷贝速度根本无法比啊,想知道怎么会差那么多,照理说IO流不是调用的Windows底层资源吗?
不应该吧。。。。
下面是源码
- import java.io.*;
- class CopyMp3
- {
- public static void main(String[] args) throws IOException
- {
- long start = System.currentTimeMillis();
- copy_1();
- long end = System.currentTimeMillis();
- System.out.print((end-start)+"毫秒");
- }
- // 通过字节流的缓冲区完成复制。速度快些。但还是很慢。。。
- public static void copy_1() throws IOException
- {
- MyBufferedInputStream bis = new MyBufferedInputStream(new FileInputStream("d:\\360桌面截图20141128211954.jpg"));
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\aadvanced.jpg"));
- int by = 0;
- while ((by=bis.read())!=-1)
- {
- bos.write(by);
- }
- /*有溢出风险的一种方式
- byte [] buffer = new byte[fis.available()];
- fis.read(buffer);
- fos.write(buffer);*/
- bis.close();
- bos.close();
- }
- /*如果不用字节流的缓冲区的话会很慢
- public static void copy_1() throws IOException
- {
- FileInputStream bis = new FileInputStream("d:\\360桌面截图20141128211954.jpg");
- FileOutputStream bos = new FileOutputStream("d:Java.jpg");
- int by = 0;
- while ((by=bis.read())!=-1)
- {
- bos.write(by);
- }
- bis.close();
- bos.close();
- }*/
- }
复制代码
|
|