A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张龙欢 中级黑马   /  2013-5-25 22:57  /  1725 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张龙欢 于 2013-5-25 23:53 编辑

取出D:盘下全部的.java文件的文件路径保存在java.txt文件中要求:1.通过递归的方式遍历d:盘.判断文件的扩展名是否是以.java结尾.2,把符合条件的File对象都存入到集合中.3,遍历该集合.通过输出流把文件对象的getAbsolutePath写入到java.txt文件中.怎么做这题?哪位朋友麻烦指点下

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 先自己试着写写再提问最好

查看全部评分

6 个回复

倒序浏览
你要代码还是思路啊,你建立个File对象,传进路径你说的D盘,然后判断里面有文件或者目录没,如果有,得到里面所有的文件跟我文件夹 ,这是一个数组,然后遍历,逐一进去判读,如果得到的是目录,递归一次。如果不是,判断是不是。java文件结尾,是的话,加入集合!
回复 使用道具 举报
  1. import java.io.BufferedWriter;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.List;

  7. public class JavaFileList {

  8.         /**
  9.          * @param args
  10.          * @throws IOException
  11.          */
  12.         public static void main(String[] args) throws IOException {
  13.                 // TODO Auto-generated method stub
  14.                 File dir = new File("D:\\java");
  15.                 List<File> list = new ArrayList<File>();
  16.                 file2List(dir,list);
  17.                
  18.                 File f = new File(dir,"javaList.txt");
  19.                 write2File(list,f.toString());
  20.         }
  21.        
  22.         public static void file2List(File dir,List<File> list){
  23.                 File[] arr = dir.listFiles();
  24.                 for(File f: arr){
  25.                         if(f.isDirectory()){
  26.                                 file2List(f,list);
  27.                         }
  28.                         else {
  29.                                 if(f.getName().endsWith(".java"))
  30.                                         list.add(f);
  31.                         }
  32.                 }
  33.         }
  34.        
  35.         public static void write2File(List<File> list,String javaListFile)throws IOException{
  36.                 BufferedWriter bw = null;
  37.                 try{
  38.                         bw = new BufferedWriter(new FileWriter(javaListFile));
  39.                         for(File f:list){
  40.                                 String path = f.getAbsolutePath();
  41.                                 bw.write(path);
  42.                                 bw.newLine();
  43.                                 bw.flush();
  44.                         }
  45.                 }catch(IOException e){
  46.                         throw e;
  47.                 }
  48.                 finally{
  49.                         try{if(bw!=null)
  50.                                 bw.close();
  51.                         }catch(IOException e){
  52.                                 throw e;
  53.                         }
  54.                                
  55.                         }
  56.                 }
  57.         }
复制代码
以前写的,没加注释,有兴趣你加一些

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 袁梦希 于 2013-5-25 23:16 编辑

酱油~~{:soso_e100:}
回复 使用道具 举报
曹睿翔 发表于 2013-5-25 23:08
以前写的,没加注释,有兴趣你加一些

谢谢,曹老大!
回复 使用道具 举报
本帖最后由 王盟盟 于 2013-5-25 23:44 编辑

直接给你代码吧
  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.ArrayList;

  6. public class GetFileName {

  7.         /**
  8.          * 取出D:盘下全部的.java文件的文件路径保存在java.txt文件中要求:
  9.          * 1.通过递归的方式遍历d:盘.判断文件的扩展名是否是以.java结尾.
  10.          * 2,把符合条件的File对象都存入到集合中.
  11.          * 3,遍历该集合.通过输出流把文件对象的getAbsolutePath写入到java.txt文件中
  12.          */
  13.         static ArrayList<File> fileList=null;//初始化list集合
  14.         FileOutputStream fos=null;//初始化文件输出流
  15.         public static void main(String[] args) {
  16.                 fileList=new ArrayList<File>();//创建list集合
  17.                 GetFileName obj=new GetFileName();
  18.                 obj.getFile(new File("D:\\"));
  19.                 obj.write2File();               
  20.         }        
  21.         //写入文件
  22.         public void write2File()
  23.         {
  24.                 File dirFile=new File("d:\\java.txt");//创建目标文件
  25.                 try {
  26.                         fos=new FileOutputStream(dirFile);//创建文件输出流
  27.                         //遍历集合
  28.                         if(fileList.size()>0)
  29.                                 for(File file:fileList)
  30.                                 {
  31.                                         fos.write((file.getAbsolutePath()+"\r\n").getBytes());//写入文件
  32.                                 }
  33.                 } catch (FileNotFoundException e) {
  34.                         // TODO Auto-generated catch block
  35.                         e.printStackTrace();
  36.                 } catch (IOException e) {
  37.                         // TODO Auto-generated catch block
  38.                         e.printStackTrace();
  39.                 }
  40.         }
  41.         //获取文件
  42.         public void getFile(File path)
  43.         {
  44.                 System.out.println(path.getAbsolutePath());//打印出当前正在遍历的目录
  45.                 File files[]=path.listFiles();//列出目录下所有文件、文件夹
  46.                 if(files!=null&&files.length>0)
  47.                 {
  48.                         //遍历目录
  49.                         for(File file:files)
  50.                         {
  51.                                 if(file.isDirectory())
  52.                                 {
  53.                                         getFile(file);
  54.                                 }else
  55.                                 {
  56.                                         if(file.getName().endsWith("java"))//判断是否是java文件
  57.                                                         fileList.add(file);//加入集合
  58.                                 }
  59.                         }
  60.                 }                        
  61.         }
  62. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

回复 使用道具 举报
王盟盟 发表于 2013-5-25 23:41
直接给你代码吧

谢谢,我什么时候才有你们这种功力啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马