编写一个程序:
将指定目录下的所有带.java文件都拷贝到另外一个目录中,拷贝成功后,把后缀名.java改成.txt
要求效果如下:
简单实现代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyDemo {
public static void main(String[] args) throws Exception {
// 1. 找到源目录中所有的java文件
File src_dir = new File("java");//源路径
File des_dir = new File("txt");//目标路径
File[] fs = src_dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
//System.out.println(Arrays.toString(fs));
// 2. 迭代出每一个文件对象,并拷贝
for (File srcfile : fs) {
// 创建流对象
InputStream in = new FileInputStream(srcfile);
OutputStream ot = new FileOutputStream(new File(des_dir, srcfile.getName()));
// 3.具体 的输入输出操作
// 容量最好写1024的倍数,相当于1kb,比较好算
byte[] b = new byte[1024];
int len = -1;// 表示已经读取的字节数, 在底层规定-1读取到末尾
in.read(b);// 数据存到数组b中
while (len != -1) {
ot.write(b, 0, len);
len = in.read(b);
}
// 4. 关闭资源
in.close();
ot.close();
String newName =new File(des_dir,srcfile.getName()).getName().replace(".java",".txt");
new File(des_dir,srcfile.getName()).renameTo(new File(des_dir,newName));
}
}
}