package cn.idcast2;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
public class Day12 {
/*
* 需求:复制指定目录下的指定文件,并修改后缀名。 指定的目录是:jad 指定的文件是:.java文件 指定的后缀名是:.jad
*
* 数据源:e:\\java\\A.java
* 目的地:e:\\jad\\A.jad
*
* 分析:
* A:封装目录
* B:获取该目录下的java文件的File数组
* C:遍历该File数组,得到每一个File对象
* D:把该File进行复制
* E:在目的地目录下改名
*/
public static void main(String[] args) throws IOException {
File srcFolder = new File("e:\\java");
File destFolder = new File("e:\\jad");
if (!destFolder.exists()) {
destFolder.mkdir();
}
//File的文件名称过滤器功能
File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
for (File file : fileArray) {
String name = file.getName(); //得到e:\\java目录下的A.java文件名称 主要看循环的是什么,这里为file,即用该方法
File newFile = new File(destFolder, name); //这里显示的为e:\\jad\\A.java 已经得到文件名称了,接下来就要拼接文件和文件名称
copyFile(file, newFile);
}
File[] destFileArray = destFolder.listFiles(); //遍历
for (File destFile : destFileArray) {
String name = destFile.getName(); //得到e:\\jad目录下的A.java 主要要循环的是什么,这里为destFile,即用该方法
String newName = name.replace(".java", ".jad"); //得到e:\\jad目录下的A.jad
File newFile = new File(destFolder, newName); //这里显示的为e:\\jad\\A.jad
destFile.renameTo(newFile);
}
}
private static void copyFile(File file, File newFile) throws IOException {
// TODO Auto-generated method stub
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
file));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(newFile));
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read()) != -1) {
bos.write(bys, 0, len);
}
bis.close();
bos.close();
}
}