- package com.heima23;
- 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.IOException;
- import java.util.Scanner;
- /*
- * 键盘获取两个文件夹路径,将其中的一个文件夹中的.java文件改为.tat文件并拷贝到另一个文件夹中
- *
- * 创建目标文件夹,在目标文件夹中创建原文件夹名
- * 获取路径下的所有文件或文件夹 封装成 File数组
- * 遍历数组
- * 如果是文件 如果文件是以.java结尾 就用IO流读 并改名
- * 改名后用IO流写 改过名后的文件
- * 是文件夹有调用递归
- * 关流
- * */
- public class Practice_CopyFile {
- public static void main(String[] args) throws IOException {
- File src = getFile(); //原文件路径
- File dest = getFile(); //目标文件夹路径
-
- copy(src,dest); //调用复制功能
-
- }
- public static File getFile() {
- //创建键盘录入对象
- Scanner sc = new Scanner(System.in);
- System.out.println("请录入一个文件夹路径:");
- //无限循环
- while(true){
- String line = sc.nextLine();
- //将字符串封装成File对象
- File file = new File(line);
- //如果路径不存在,提示
- if(!file.exists()){
- System.out.println("不存在,重新录。。。。");
- //如果是文件路径,提示
- }else if(file.isFile()){
- System.out.println("您录得是文件,请录文件夹路径。。。。");
- }else{
- //返回文件
- return file;
- }
- }
- }
-
- public static void copy(File src, File dest) throws IOException{
- //创建目标文件夹,并在目标文件夹中创建原文件夹名
- File newDir = new File(dest,src.getName());
- newDir.mkdir();
- //获取路径下的所有文件或文件夹 封装成File数组
- File[] subFiles = src.listFiles();
- //遍历数组
- for(File subFile : subFiles){
- //判断如果是文件
- if(subFile.isFile()){
- //如果文件名是以.java结尾
- if(subFile.getName().endsWith(".java")){
- //用IO流读
- BufferedInputStream bis = new BufferedInputStream(
- new FileInputStream(subFile));
- //改名
- String subFileName = subFile.getName();
- String newName = subFileName.replace(".java", ".txt");
- File fff = new File(dest, newName);
- //用IO流写 改名后的文件
- BufferedOutputStream bos = new BufferedOutputStream(
- new FileOutputStream(fff));
- //高效读取
- byte[] bys = new byte[1024*8];
- int len;
- while((len = bis.read(bys))!= -1){
- bos.write( bys,0,len);
- }
- //关流
- bis.close();
- bos.close();
- }
- //是文件夹就调用递归
- }else {
- copy(subFile,newDir);
- }
- }
- }
- }
复制代码 |
|