[黑马程序员](第33天)今晚做的7k面试题(1)

------- android培训java培训、期待与您交流! ----------16.取出D:盘下全部的.java文件的文件路径保存在java.txt文件中
思路:
遍历文件用list()方法和递归
判断.java后缀用endsWith()方法,因为是文本文件,故用FileInputStream和FileoutputStream
还要注意编码习惯:讨论,边界和异常


注意:
当目录下全是文件时,直接用list(FilenameFilter fnf)即可
但当目录下有子文件夹时,就要结合递归和判断(即先递归得到所有的文件名称,
再循环判断,放入集合---也可以边递归边判断然后边存入)




注意:如果把题目改成把所有的.java结尾的存入一个目录,而不是写名字到txt中,就不一样了
代码:
class Program {
public static void main(String[] args){
File formFile = new File("D:");
File toFile = new File("java.txt");
checkFile(formFile,toFile);
}
public void checkFile(File fromFile, File toFile) throws IOException{
//编码三习惯:异常。边界。讨论
if(!fromFile.exists()){
throw new RuntimeException("该文件不存在,请重新检查!");
}else if(from.isDirectory()){
//遍历文件
File[] files = formFile.listFiles();
//循环
for(File file : files){
checkFile(file,toFile);
}
}else if(fromFile.getName().endsWith(".java")){
copyFile(fromFile,toFile);
}
}
public void copyFile(File fromFile,File toFile){
Stirng name =  fromFile.getName();
FileInputStream fis = new FileInputStream(fromFile);
FileOutputStream fos = new FileOutputStream(new File(toFile,name);
try{
byte[] bytes = new bytes[1024];
int len;
while((fis.read(bytes) = len) != -1){
fos.write(bytes,0,len);
}
}catch(IOException e){
e.printStackTrace();
}finally{
fis.close();
fos.close();
}
}
}


或者:


class Program {
public static void main(String[] args){
File formFile = new File("D:");
File toFile = new File("java.txt");
checkFile(formFile,toFile);
}
public void checkFile(File fromFile, File toFile) throws IOException{
//编码三习惯:异常。边界。讨论
if(!fromFile.exists()){
throw new RuntimeException("该文件不存在,请重新检查!");
}else if(from.isDirectory()){
//遍历文件
File[] files = formFile.listFiles();
//循环
for(File file : files){
checkFile(file,toFile);
}
}else if(fromFile.getName().endsWith(".java")){
writeFileName(fromFile);
}
}
public void writeFileName(File fromFile)throws IOException{
String name = formFile.getName();
File f  = new File("java.txt");
FileWriter fw = new FileWriter(f);


try{
fw.write(name);
}catch(IOException e){
e.printStackTrace()
}finally{
fw.close();
}
}
}










----------
这俩的区别只有一点其实:
就是new FileOutputStream(new File(toFile,name))
new FileOutputStream(new File("java.txt"));
上边的是写入文件到一个目录中
下边的是在文件中写字符串
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值