黑马程序员技术交流社区
标题:
IO流拷贝速度问题
[打印本页]
作者:
schwiftX
时间:
2015-3-17 23:52
标题:
IO流拷贝速度问题
自己按照毕老师的视频编写了个复制文件的小程序,已经用上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();
}*/
}
复制代码
作者:
zhqw_heima
时间:
2015-3-18 08:42
可能是实现的方法不一样吧,就比如说排序,我们学的有冒泡排序和选择排序,但是效率都不高,java有封装的希尔排序等,效率比较高,他们的算法应该是不一样的
作者:
没劲睡觉
时间:
2015-3-18 09:51
那就先用数组存储 看看
作者:
schwiftX
时间:
2015-3-18 10:09
没劲睡觉 发表于 2015-3-18 09:51
那就先用数组存储 看看
用过,几乎都一样的速度,所以测试过后删掉了那段代码。
测试了好几种,只有加Buffered和不加有区别,其他不管我代码怎么改都差不多。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2