小弟想实现下面的功能.某个文件夹下面有200个文件夹,这两百个文件夹下又放着数量不等的文本文件。我想把这些文件夹下的文件遍历一遍,将它们copy到一个文件夹下,从1开始对文件命名,请大虾给写一下,急用!谢谢!
例如:
输入:
文件夹A下有文件夹1,文件夹2,文件夹3.文件夹1下有1.html,2.html,3.html.文件夹2下有1.html,2.html.文件夹3下有1.html.
输出:
创建一个新文件夹B,将A下面所有的文件按序copy到B中,1.html,2.html,3.html,4.html,5.html,6.html,这里的4.html就是文件夹2下面的1.html,5.html就是文件夹2下面的2.html,6.html就是文件夹3下面的1.html.
例如:
输入:
文件夹A下有文件夹1,文件夹2,文件夹3.文件夹1下有1.html,2.html,3.html.文件夹2下有1.html,2.html.文件夹3下有1.html.
输出:
创建一个新文件夹B,将A下面所有的文件按序copy到B中,1.html,2.html,3.html,4.html,5.html,6.html,这里的4.html就是文件夹2下面的1.html,5.html就是文件夹2下面的2.html,6.html就是文件夹3下面的1.html.
import java.text.*;
import java.io.IOException;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class Test {
private List files=new ArrayList(); public static void main(String args[]) {
//得到e:\\abc目录下所有的文件
File file =new File("e:\\abc"); Test test=new Test();
test.getFile(file);
System.out.println(test.files.size()); //把所有文件拷贝到这个目录下
String path="c:\\my\\";
File dir=new File(path);
if(!dir.exists()){
dir.mkdirs();
}
//开始复制
try {
for (int i = 0; i < test.files.size(); i++) {
//把旧文件读进内存
File oldFile = (File) test.files.get(i);
byte b[] = new byte[ (int) oldFile.length()];
FileInputStream in = new FileInputStream(oldFile);
in.read(b);
//创建并把内容写入新文件
FileOutputStream out = new FileOutputStream(path + i + ".html");
out.write(b);
}
}
catch (IOException ex) {
ex.printStackTrace();
}
} public File getFile(File file) {
File result=null;
if(file.isDirectory()){
System.out.println("目录");
File f[]=file.listFiles();
for(int i=0;i<f.length;i++){
File ff=this.getFile(f[i]);
if(ff!=null){
files.add(ff);
}
}
}else{
System.out.println("文件");
result=file;
}
return result;
}
}