文件复制 递归操作 以及改文件名

来源:互联网 发布:淘宝达人怎么过v2 编辑:程序博客网 时间:2024/05/22 05:18
package com.qidai;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;


/**
 * 提示用户输入任意目录,将该目录下所有.txt文件复制到D:\\txts文件夹下,并将文件后缀名改为.docx
 */
public class Test8 {
public static void main(String[] args) {
Test8 t = new Test8();


System.out.println("请输入文件目录,如:       E:\\javaproject\\exam");
Scanner sc = new Scanner(System.in);
String path = sc.next();
System.out.println(path);


// 原目录
File dir = new File(path);
// 目标目录
File dest = new File("D:\\txts");


if(t.copy(dir, dest)){
System.out.println("写入成功");
}else{
System.out.println("写入错误,请检查路径");
}
}


public boolean copy(File dir, File dest) {


// 判断原目录是否存在 不存在则创建
if (!dest.exists()) {
dest.mkdirs();
}


// 判断目标是否是目录 不存在则创建
if (dest.isDirectory()) {
dest.mkdirs();
}


try {
//获取所有文件
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory())
// 如果此File对象是目录,递归进入目录
copy(file, dest);
else {
// 判断是否是txt类型文件
if (file.getName().endsWith(".txt")) {
BufferedReader br = new BufferedReader(new FileReader(file));
// 将txt文件复制到目标目录, 并更改扩展名
PrintWriter pw = new PrintWriter(new FileWriter(dest.getAbsolutePath()
+ File.separator+ file.getName().replace(".txt",".docx")));
String line = null;
while ((line = br.readLine()) != null) {
pw.println(line);
}
br.close();
pw.close();
}
}
}
return true;
} catch (Exception e) {
return false;
}


}


}
0 0
原创粉丝点击