java海量处理图片

小_Y 2011-09-13 05:21:53
现在某个文件夹下有上亿个小图片(1-10k),有什么工具或者用java编写程序 来实现把这个文件夹复制到另一个文件夹中。(速度最好大于500kb/s )
...全文
267 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
小恩yoo 2011-09-15
  • 打赏
  • 举报
回复
学习学习、、、真没见过、、
cherry 2011-09-15
  • 打赏
  • 举报
回复
二楼的方法不太好,太慢了
shagan 2011-09-15
  • 打赏
  • 举报
回复
是对外的网站用的吧?
用java等?除非疯了。
linux上写shell不就行了。
windows上直接用批处理也行啊。
为什么搞的这么复杂,
不同机器的复杂,linux上还有rsync同步
cherry 2011-09-15
  • 打赏
  • 举报
回复
继续继续,学习学习
想喝咖啡的貓 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 itbasketplayer 的回复:]

我测试的是把F:JAVA/F1里的3.86M的图片复制到桌面的F1文件夹下用时不到0.5秒,LZ请告诉我为什么不符合呢?
[/Quote]
碎文件复制相当耗时间,复制单个1G的文件比 复制1000个小文件快的多。
想喝咖啡的貓 2011-09-14
  • 打赏
  • 举报
回复
如果你用系统的copy命令都达不到你要求的话,最好别指望Java了。
  • 打赏
  • 举报
回复
我测试的是把F:JAVA/F1里的3.86M的图片复制到桌面的F1文件夹下用时不到0.5秒,LZ请告诉我为什么不符合呢?
  • 打赏
  • 举报
回复
LZ不符合吗?那这样吧,把copyFolder("F:/JAVA/F1","F:/JAVA/F2");文件夹写成一样的,路径自己选应该符合吧
sunyiz 2011-09-14
  • 打赏
  • 举报
回复
一定要复制嘛?
剪切能满足要求不?
大家都知道,在同一个盘符下进行“剪切--粘贴”操作
由于实际上只是修改了文件的路径,并没有产生复制的过程
所以再多再大的文件,基本上都是一瞬间的事

所以如果用 renameTo 方法改动到同一盘符的其它目录下的话,应该很快
只是不知道这样能否满足要求
雨天要吃饭 2011-09-14
  • 打赏
  • 举报
回复
学习一下
dragonsky_w 2011-09-14
  • 打赏
  • 举报
回复
学习了,不过这个应该就是文件夹的复制问题啊……应该是与代码没有关系的吧……
小_Y 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 itbasketplayer 的回复:]

我测试的时候也有50多张图片,LZ说上亿个小图片那确实没试过...LZ是说速度不符合还是其他的?
[/Quote]
测试的数据不符合。
beowulf2005 2011-09-14
  • 打赏
  • 举报
回复
这跟JAVA 图像处理有毛关系阿?

明明就是一批处理copy文件嘛!
小_Y 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sunyiz 的回复:]

一定要复制嘛?
剪切能满足要求不?
大家都知道,在同一个盘符下进行“剪切--粘贴”操作
由于实际上只是修改了文件的路径,并没有产生复制的过程
所以再多再大的文件,基本上都是一瞬间的事

所以如果用 renameTo 方法改动到同一盘符的其它目录下的话,应该很快
只是不知道这样能否满足要求
[/Quote]
剪切可以,可惜不再同一盘符。
  • 打赏
  • 举报
回复
我测试的时候也有50多张图片,LZ说上亿个小图片那确实没试过...LZ是说速度不符合还是其他的?
  • 打赏
  • 举报
回复
上亿的图片用 HDFS 分布式存储吧,否则得搞死!
小_Y 2011-09-13
  • 打赏
  • 举报
回复
不考虑硬件配置的话。
自己写的才100k++, fastcopy 参不多 200k++
有更快的么?

另:2楼的 测试不符合本意。
Devil26 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouyuqwert 的回复:]

传输速度还跟代码有关系的?
[/Quote]
跟电脑性能有关系,不过算法不同,电脑所需的操作也就不同,速度自然不一样!
阳明 to life 2011-09-13
  • 打赏
  • 举报
回复
传输速度还跟代码有关系的?
  • 打赏
  • 举报
回复
我测试的F1文件夹3.9M,用时0.18秒,速度LZ自己算下,完全达到你的要求,而且的话支持读取子文件夹,文件类型也不只是图片
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


public class CopyFolder {
public static void main(String[] args)
{ long begin=System.currentTimeMillis();
copyFolder("F:/JAVA/F1","F:/JAVA/F2");
long end=System.currentTimeMillis();
System.out.println((end-begin)*0.001+"秒");
}
public static void copyFolder(String oldPath, String newPath) {

try {
(new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(oldPath);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
if(oldPath.endsWith(File.separator)){
temp=new File(oldPath+file[i]);
}
else{
temp=new File(oldPath+File.separator+file[i]);
}

if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" +
(temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ( (len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();

}

}
}
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧