黑马程序员技术交流社区
标题:
分享: IO流常考题
[打印本页]
作者:
Fate_stay
时间:
2016-9-29 22:46
标题:
分享: IO流常考题
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
题目:
编写一个程序,将指定目录下所有.java文件拷贝到另一个目录中,
并将扩展名改为.txt
思路:
1、用File对象封装目录
2、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
3、遍历这个File数组,得到每一个File对象
4、判断该File对象是否是文件
a、如果是文件
b、继续判断是否以.java结尾
是:先改名后复制文件
否:不复制
总结: 先复制, 后改名
*/
public class Prictice2 {
public static void main(String[] args) throws IOException {
File file = new File("D:\\new_test");
// 调用方法,遍历文件或文件夹,将所有.java后缀的改为.txt,随后复制给E盘Test文件夹中
lookFiles(file);
System.out.println("先复制.java文件,随后写入文件夹Test时,将文件后缀写为: .txt, 完毕");
}
private static void lookFiles(File file) throws IOException {
// 使用listFiles()遍历文件
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()) {
if(f.getName().endsWith(".java")) {
// 取得它的小数点的角标
int index = f.getAbsolutePath().lastIndexOf(".");
// 利用角标,截取字符串
String str = f.getAbsolutePath().substring(index);
// 将.java后缀 替换成 .txt
String newFileName = f.getName().replace(str, ".txt");
// renameTo(File f)方法怎么用? 答: 里面传文件
// 调用拷贝方法
copyFiles(f, newFileName);
}
} else {
// 递归调用方法,是文件夹的话继续遍历
lookFiles(f);
}
}
}
// 复制文件方法
private static void copyFiles(File file, String newFileName) throws IOException {
File newFile = new File("E:\\Test", newFileName);
// 1.创建流
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
// 2.写入数据
// a.声明有效长度
int len;
// b.声明字符数组
char[] ch_arr = new char[1024];
while((len = br.read(ch_arr)) != -1) {
// 写入数据
bw.write(ch_arr, 0, len);
}
// 3.关闭资源
bw.close();
br.close();
}
}
作者:
juanjuan
时间:
2016-10-1 00:06
谢谢,我正好在学习............................
作者:
梦想工程师
时间:
2016-10-1 00:58
感觉复制的什么事最难的
作者:
一半的留言
时间:
2016-10-1 02:01
我觉得点招题不可怕,最可怕的是面试
作者:
李春林
时间:
2016-10-1 04:06
谢谢楼主的分享
作者:
wangkai426
时间:
2016-10-1 16:10
这题常考吗?
作者:
xianghui0521
时间:
2016-10-3 10:31
改名字 就是截取 后面 .java 然后再替换.txt 么?
作者:
小沧月
时间:
2016-10-3 10:48
66666666666
作者:
小泥人
时间:
2016-10-3 11:34
学习了,感谢
作者:
huangweicong
时间:
2016-10-3 11:51
谢谢!!!!!!
作者:
babysa
时间:
2016-10-3 12:31
IO这段真搞不懂
作者:
逍遥荻花
时间:
2016-10-3 14:33
可以直接替换不用截取吧 直接.txt替换.java
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2