[Java] 纯文本查看 复制代码
public class Test {
/**
*
* @author ZhangYiLing
*
*/
public static void main(String[] args) throws IOException {
//源文件目录
File srcName = new File("D:\\文档");
//目标文件目录
File destName = new File("E:\\test4");
//判断目的地文件夹是否存在,如不存在则创建它
if (!destName.exists()) {
destName.mkdir();
}
//调用文件夹复制功能
copyFolder(srcName,destName);
}
private static void copyFolder(File srcName, File destName) throws IOException {
//判断srcName对象是否为文件夹,如果不是则复制里面的所有文件.
if (srcName.isDirectory()) {
//建立目的地文件夹路径
File newFolder = new File(destName,srcName.getName());
//创建目的地文件夹
newFolder.mkdir();
//获取源地址文件夹数组
File [] folderArray = srcName.listFiles();
//使用增强for循环获取源地址每一个文件夹
for(File file: folderArray) {
//使用递归,继续获取源地址文件夹路径名称后创建到目的地路径文件夹
copyFolder(file,newFolder);
}
// 过滤非java文件
} else if (srcName.isFile() && srcName.getName().endsWith(".java")){
// 将java文件的后缀名替换为txt
String destTxt = srcName.getName().replace(".java", ".txt");
//创建一个新的文件对象用于指定输出文件路径
File newFile = new File(destName,destTxt);
copyFile(srcName,newFile);
}
}
private static void copyFile(File srcName, File newFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcName));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
byte [] bys = new byte[1024];
int len = 0;
while((len = bis.read(bys)) != -1){
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
}
[Java] 纯文本查看 复制代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class Demo2 {
private static Scanner sc = new Scanner(System.in);
private static File copy;
/**
* @param args
*/
public static void main(String[] args) {
/*
* 4、编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改成.txt。
*
* 解题思路: 1.使用键盘录入接收一个文件夹路径, 输入正确则返回一个文件夹路径, 不正确则提示并 死循环接收.
*
* 2.再让其输入一个存放路径,跟第1步相同 3.再使用递归方法查询指定目录下的文件,如果是文件夹,就递归调用 4.如果是文件,就判断
* 如果是.java文件,如果是.java文件则使用拷贝, 使用高效的字节读取流将文件读取, 再使用高效的字节输出流将文件名修改并复制
*
* 其他的文件就不搭理
*/
System.out.println("请输入要被拷贝的文件夹路径:");
File f = getPath();
System.out.println("请输入要复制到指定的文件夹路径:");
copy = getPath();
digui(f);
}
private static void digui(File f) {
/**
* * 3.再使用递归方法查询指定目录下的文件,如果是文件夹,就递归调用 4.如果是文件,就判断
* 如果是.java文件,如果是.java文件则使用拷贝, 使用高效的字节读取流将文件读取, 再使用高效的字节输出流将文件名修改并复制
*
* 其他的文件就不搭理
*/
File[] listFiles = f.listFiles();
for (File file : listFiles) {
if (file.isDirectory()) {
digui(file);// 如果是文件夹,则递归调用
} else {
/**
* 4.如果是文件,就判断 如果是.java文件,如果是.java文件则使用拷贝, 使用高效的字节读取流将文件读取,
* 再使用高效的字节输出流将文件名修改并复制
*/
if(file.getName().endsWith(".java")){
System.out.println(file.getName());
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
File name = new File(copy,file.getName().replace(".java", ".txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(name));
int b;
while((b = bis.read()) != -1){
bos.write(b);
}
bis.close();
bos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
private static File getPath() {
while (true) {
// 如果不是正确的路径,则提示请输入正确的路径
File file = new File(sc.nextLine());
if (!file.exists()) {
System.out.println("请输入正确的路径");
} else if (file.isFile()) {
System.out.println("你输入的是文件路径,请输入文件夹路径");
} else {
return file;
}
}
}
}
[Java] 纯文本查看 复制代码
public static void main(String[] args) throws IOException {
File dir = getDir();//键盘录入文件夹
File dest = new File("D:\\day");//默认目的地文件夹
dest.mkdirs();
resetTo(dest,dir);//递归调用
}
private static void resetTo(File dest, File dir) throws IOException {
File[] subfiles = dir.listFiles();
if(subfiles == null){//排除拒绝访问的文件以免出错
return;
}
for (File f : subfiles) {
String name = f.getName();
if(f.isFile() && name.endsWith(".java")){//寻找".java"结尾的文件
File d = new File(dest,name.replace(".java", ".txt"));//用目的地文件夹和改后的文件名创建新文件
FileReader fr = new FileReader(f);
FileWriter fw = new FileWriter(d);
int len;
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1){//将文件上的数据读取到字符数组中
fw.write(chs, 0, len); //将字符数组中的数据写到文件上
}
fr.close();
fw.close();
}else if(f.isDirectory()){//若是文件夹就递归,其他情况继续进入下一循环
resetTo(dest,f);
}
}
}
private static File getDir() {
Scanner sc = new Scanner(System.in);
while(true){
String line = sc.nextLine();
File dir = new File(line);
if(!dir.exists()){
System.out.println("格式错,文件不存在");
}else if(dir.isFile()){
System.out.println("这是文件夹,请重录");
}else{
return dir;
}
}
}