- package com.xuchang.test;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- public class Test2 {
- /**
- * 题目2:
- 编写一个程序,将D:\Java目录下的所有java文件复制到D:\jad目录下,
- 并将原来文件的扩展名从.java改为.jad
- 需求:
- 先复制,后改名。
- 1.创建字节输入流对象关联 D:\Java
- 2.创建字节输出流对象关联D:\jad
- 3.调用copy()方法
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
- //封装源文件和目标文件
- File src = new File("D:\\Java");
- File dest = new File("D:\\jad");
- //调用copy()方法
- copy(src,dest);
- System.out.println("复制成功");
-
- }
-
- /*定义copy()方法将源文件夹下所有的以.java结尾的文件复制到目标文件夹下并改名
- * A.返回值类型void
- * B.参数列表 File src,File dest
- * 3.调用listFiles()方法获得Java文件夹下所有文件对象的数组
- 4.遍历该数组 并判断 如果是文件 则判断是否以.java结尾 若以.java结尾则先赋值到D:\jad中再改名
- 若是文件夹则递归
- * */
- public static void copy(File src,File dest) throws IOException {
- //3.调用listFiles()方法获得Java文件夹下所有文件对象的数组
- File[] files = src.listFiles();
- //4.遍历该数组 并判断 如果是文件 则判断是否以.java结尾 若以.java结尾则先复制到D:\jad中再改名
- //若是文件夹则递归
- for(File file : files) {
- if(file.isFile() &&file.getName().endsWith(".java")) {
- //1.创建字节输入流对象关联 D:\Java
- FileInputStream fis = new FileInputStream(file);
- //2.创建字节输出流对象关联D:\jad\文件名
- File newFile = new File(dest,file.getName());
- FileOutputStream fos = new FileOutputStream(newFile);
- //定义临时变量len
- int len;
- //不停的读写 知道read()返回-1
- while((len = fis.read()) != -1) {
- fos.write(len);
- }
- fis.close();//关流释放资源
- fos.close();
-
- //改名调用renameTo(File file)方法
- newFile.renameTo(new File(dest,newFile.getName().replace(".java", ".jad")));
- //这里要注意 新的文件路径要带上dest
- //不知道为啥改名不成功
- //如果是文件夹则递归
- }else if(file.isDirectory()){
- copy(file,dest);
- }
- }
- }
- }
复制代码 |
|