求大神指导!编写一个程序,将指定目录下所有.java文件拷贝到另一个目录中,并将扩展名改为.txt

会编程的猩猩 2016-11-24 09:26:00

package com.baidu;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

/* 编写一个程序, 将指定目录下所有.java文件拷贝到另一个目录中,
并将扩展名改为.txt
思路:
1、用File对象封装目录
2、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
3、遍历这个File数组,得到每一个File对象
4、判断该File对象是否是文件
a、如果是文件
b、继续判断是否以.java结尾
是:先改名后复制文件
否:不复制
*/
public class Demo07 {

public static void main(String[] args) throws IOException {
// 用File对象封装目录
File src = getDir();
// 用File对象封装目录
File dest = getDir();
// 调用复制的方法
copyFile(src, dest);
}

// 复制方法
public static void copyFile(File src, File dest) throws IOException {
// 通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
File[] subFiles = src.listFiles();
// 遍历这个File数组,得到每一个File对象
for (File subFile : subFiles) {
// 判断该File对象是否是文件
if (subFile.isFile()) {
// 如果不是以java为后缀的不复制,执行下次循环
if (!subFile.getName().endsWith(".java")) {
continue;
} else {
// 新文件File对象//复制前改名
File newDir = new File(dest, subFile.getName().replace(".java", ".txt"));
// 用高效的字节输入流封装数据源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
// 用高效的字节输出流封装目的地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newDir));
byte[] arr = new byte[8 * 1024];
int len;
// 判断是否读到文件结尾
while ((len = bis.read(arr)) != -1) {
// 将数据写到文件中
bos.write(arr, 0, len);
// 刷新缓存流
bos.flush();
}
// 关闭流对象
bis.close();
bos.close();
}
}
}
}
public static File getDir() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径");
while (true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.exists()) {
System.out.println("您输入的路径不存在,请重新输入!");
} else if (file.isFile()) {
System.out.println("您输入的是文件的路径,请输入一个文件夹路径!");
} else {
return file;
}
sc.close();
}
}
}
...全文
464 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
拘谨的小人 2016-11-28
  • 打赏
  • 举报
回复
引用 4 楼 u010436867 的回复:
[quote=引用 3 楼 u012943783 的回复:] 报错贴报错信息呀
我自己都解决了,啊,上面有正确的代码啊。。。。[/quote]
会编程的猩猩 2016-11-24
  • 打赏
  • 举报
回复

package com.baidu;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Demo08 {
	/*
	 * 编写一个程序,将指定目录下所有.java文件拷贝到另一个目录中,
		并将扩展名改为.txt
	 */
	public static void main(String[] args) throws IOException {
		File src = getDir();
		File dest = getDir();
		copy(src, dest);
	}

	public static void copy(File src, File dest) throws IOException {
		File newDir = new File(dest, src.getName());
		newDir.mkdir();
		File[] subFiles = src.listFiles();
		for (File subFile : subFiles) {
			if (subFile.isFile()) {
				if (subFile.getName().endsWith(".java")) {
					File newFile = new File(subFile, subFile.getName().replace(
							".java", ".txt"));
					// 用BufferedInputStream和BufferedOutputStream也可以
					BufferedReader br = new BufferedReader(new FileReader(subFile));
					BufferedWriter bw = new BufferedWriter(new FileWriter(new File(newDir, newFile.getName())));
					String line;
					while ((line = br.readLine()) != null) {
						bw.write(line);
						bw.flush();
						bw.newLine();
					}
					br.close();
					bw.close();
				}
			} else {
				copy(subFile, newDir);
			}

		}
	}

	public static File getDir() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入文件夹路径:");
		while (true) {
			String line = sc.nextLine();
			File file = new File(line);
			if (!file.exists()) {
				System.out.println("您输入的文件夹路径不存在,请重新输入!");
			} else if (file.isFile()) {
				System.out.println("您输入的是一个文件路径,请重新输入!");
			} else {
				return file;
			}
			sc.close();
		}
	}
}

自己解决了,好高兴!!!
会编程的猩猩 2016-11-24
  • 打赏
  • 举报
回复
谁给看看哪里错了,找不到原因啊,该怎么写,给出正确的答案,谢谢!
会编程的猩猩 2016-11-24
  • 打赏
  • 举报
回复
引用 3 楼 u012943783 的回复:
报错贴报错信息呀
我自己都解决了,啊,上面有正确的代码啊。。。。
拘谨的小人 2016-11-24
  • 打赏
  • 举报
回复
报错贴报错信息呀

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧