黑马程序员技术交流社区
标题:
黑马程序员-第9题
[打印本页]
作者:
李文思
时间:
2015-7-11 15:23
标题:
黑马程序员-第9题
------<a target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
复制代码
自己根据所学的视频做的基础测试题第9题,刚开始学,希望大家能给出改进意见,谢谢。
package com.itheima;
import java.io.*;
import java.util.ArrayList;
/**
* 9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
* 答;1,获取目录下所有java文件对象存入集合中
* 2,将集合中所有文件拷贝到指定目录下并将护展名改为.txt
* @author liwensi
* */
public class Test9 {
public static void main(String[] args){
//定义被拷贝java文件的目录,该目录必须已存在
File start = new File("D:\\java");
//创建一个集合用于存储java文件对象
ArrayList<File> list = new ArrayList<File>();
//定义java文件的目的地,硬盘上必须有该盘符。
File end = new File("E:\\copyjava\\java");
try {
//获取目录下所有java文件存入集合中
getJavaFile(start,list);
//将集合中的元素拷贝到指定目录下
copyFileList(list,end);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 将目录下java文件存入集合中
* @param start 起始目录
* @param list 集合
* */
public static void getJavaFile(File start, ArrayList<File> list) {
//获取目录下的所有文件目录
File[] arr = start.listFiles();
//遍历数组,并且判断数组中元素是目录还是文件
for (File file:arr) {
if (file.isDirectory()) {
getJavaFile(file,list);
}
else if(file.getName().endsWith(".java")) {
list.add(file);
}
}
}
/**
* 将集合中的java文件拷贝到指定目录
* @param list 存有java文件的集合
* @param end 目录
* @throws IOException
* */
public static void copyFileList(ArrayList<File> list, File end) throws IOException {
//判断指定目录是否存在,如果不存在则创建所有该目录,包括所有不存在但必需的目录
if(! end.exists())
end.mkdirs();
//遍历集合中的元素,使用copyFile方法将文件拷贝到指定目录下
for (File file:list) {
copyFile(file,end);
}
}
/**
* 将后缀名.java改为.txt并将文件拷贝到指定目录
* @param file 后缀名为.java的文件
* @param end 指定目录
* @throws IOException
* */
public static void copyFile(File file, File end) throws IOException{
//创建字符输入流与文件关联
BufferedReader bufr = new BufferedReader(new FileReader(file));
//获取文件名称后将名称后缀改为.txt并创建一个文件对象
String name = file.getName();
name = name.substring(0, name.indexOf(".java")) + ".txt";
File newFile = new File(end + File.separator +name);
//创建输出流与新文件相关联
BufferedWriter bufw = new BufferedWriter(new FileWriter(newFile));
//将数据一行一行的写入文件
String line = null;
while((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
}
//关闭资源
bufr.close();
bufw.close();
}
}
复制代码
作者:
122125241
时间:
2015-7-11 15:45
为什么非要多集合一部,直接数组遍历判断不就可以了么
作者:
李文思
时间:
2015-7-11 16:12
122125241 发表于 2015-7-11 15:45
为什么非要多集合一部,直接数组遍历判断不就可以了么
非常感谢您能看我写的代码,集合这一步的确是可以省略点,谢谢了。:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2