深度拷贝指定扩展名文件

来源:互联网 发布:淘宝上怎么做网拍模特 编辑:程序博客网 时间:2024/05/22 04:37

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

package test;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;


public class Test3 {
/**
* 要求:将一个目录下的所有指定文件拷贝至指定目录。

* 说明:二次修改内容
* 去掉了文件过滤对象,直接判断获取的文件名是否以指定格式结尾,是的话就加入集合中
* 这样好像不是面对对象的思想,有悖编程的思想,但是代码简单多了,重要的是代码的阅读性真的提高了很多。

*/
public static void main(String[] args) throws IOException {

//定义一个arraylist集合,我要用它装file对象
ArrayList<File> al = new ArrayList<File>();
//将目录路径封装成对象
File dir = new File("e:\\java");
//深度遍历目录,用递归来搞,并将遍历出来的文件对象添加到al集合中
al = listDir(dir, al);
//拷贝集合中的文件到指定目录中去
copyFile(al, "e:\\jad");
}
/**
* 拷贝文件的函数:传给我一个集合(里面装的要是file对象),在给我一个目录,我将把集合中的所有文件拷贝到目的地器
*/
public static void copyFile(ArrayList<File> al, String destDir)
throws IOException {
//字符串缓冲区,将读到的每一行内容存储到line中
String line;
//遍历集合中的每一个对象,每一个对象就代表一个文件,读取它的内容
for (int i = 0; i < al.size(); i++) {
File file = (File) al.get(i);//将取出的对象赋给file引用
BufferedReader bufr = new BufferedReader(new FileReader(file));
BufferedWriter bufw = new BufferedWriter(new FileWriter("e:\\jad\\"
+ file.getName()));
//狂读和狂写
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();//换行,不换行就写到一行去了,会改变文本的排版格式
}
//关闭流资源
bufr.close();
bufw.close();
}
}
/**
* 遍历目录函数:给哥一个目录,把你深度遍历,获取所有文件,并通过文件名过滤器获取想要的文件,装到一个al集合中,返回给你
*/
public static ArrayList<File> listDir(File dir, ArrayList<File> al) {
File[] files = dir.listFiles();

for (File file : files) {
//System.out.println(file.getAbsolutePath());
if (file.isDirectory())
al = listDir(file, al);
else
{
//判断文件名是否以指定格式结尾,是的话就存储到集合中去
if(file.getName().endsWith("java"))
al.add(file);
//System.out.println(file.getAbsolutePath());
}
}
return al;
}

}



------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

0 0