之前有人发帖子,说 编写一个程序,将d:\java 目录下的所有.java 文件* 复制到d:\jad 目录下,* 并将原来文件的扩展名从.java 改为.jad,但不能删除原文件的问题。
下面我写了个专门将某一目录下面指定格式的文件复制到另一目录下并可以以指定格式保存,同时删除原来文件的文件复制类,现将代码贴出来给大家分享一下:
// 测试文件复制
public class MyCopyFileTest {
public static void main(String[] args) throws Exception {
MyCopyFile copyFile = new MyCopyFile();
File[] files = copyFile.getDirFiles("D:\\java", ".java");
//System.out.println(copyFile.copyFileToDir(files, "D:\\jad", ""));
System.out.println(copyFile.copyFileToDir(files, "D:\\jad", ".jad"));
}
}
class ErrMessage{
public static final String FILE_COLLECTION_IS_EMPTY="文件集合为空,不能保存文件!";
public static final String FILE_DIR_IS_EMPTY="文件保存目录能为空,不能保存文件!";
public static final String FILE_PATH_NOT_DIR="指定路径不存在或不是目录!";
public static final String WRITE_FILE_ERROR="写文件失败!";
public static final String COPY_FILE_SUCCESS="复制文件成功!";
}
class MyCopyFile {
// 获取目录下的所有文件,可以根据后缀名filter进行过滤,filter为空则获取所有文件
public File[] getDirFiles(String dir, final String filter) {
if (dir == null || dir.length() == 0) {
return null;
}
File file = new File(dir);
if (!(file.exists() && file.isDirectory())) {
return null;
}
File[] fileList = null;
if (filter == null || filter.length() == 0) {
fileList = file.listFiles();
} else {
fileList = file.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(filter);
}
});
}
return fileList;
}
// 将文件集合保存到destDir目录下,fileExtension不为空则指定保存文件的扩展名为fileExtension,为空则扩展名不变
public String copyFileToDir(File[] fileList, String destDir,
String fileExtension) {
if (fileList == null || fileList.length == 0) {
return ErrMessage.FILE_COLLECTION_IS_EMPTY;
}
if (destDir == null || destDir.length() == 0) {
return ErrMessage.FILE_DIR_IS_EMPTY;
}
File dir = new File(destDir);
if (!(dir.exists() && dir.isDirectory())) {
return ErrMessage.FILE_PATH_NOT_DIR;
}
if (fileExtension == null) {
fileExtension = "";
}
for (File file : fileList) {
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String fileName = file.getName() + fileExtension;
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
destDir, fileName)));
String str = null;
while ((str = br.readLine()) != null) {
bw.write(str);
bw.newLine();
}
br.close();
bw.close();
file.delete();
} catch (Exception e) {
throw new RuntimeException(ErrMessage.WRITE_FILE_ERROR);
}
}
return ErrMessage.COPY_FILE_SUCCESS;
}
}
|
|