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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马任雪刚 中级黑马   /  2012-5-27 17:19  /  1554 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
import java.io.*;
//需求:1.将指定目录下的java文件的绝对的路径名存入一个集合中。
    //2.再将集合中的文件目录取出存入一个指定的文件中。
public class Glc
{

public static void main(String[] args)throws IOException
{
  File fy = new File("D:\\Dem");
  List<File> list = new ArrayList<File>();
  di(fy,list);
  System.out.println(list.size());
  File f = new File(fy,"javalist.txt");
  xie(f.toString(),list);
  
  
  
}
public static void di(File fy,List<File> list)
{
  File[] fi = fy.listFiles();
  for(File fiu:fi)
  {
   if(fiu.isDirectory())
    di(fiu,list);
   else
   {
    if(fiu.getName().endsWith(".java"))
     list.add(fiu);
   }
  }
}
public static void xie(String javalist,List<File> list)throws IOException
{
  BufferedWriter buf = null;
  try
  {
   
   buf = new BufferedWriter(new FileWriter(javalist));
   
   for(File f:list)//为什么这个高级for循环用的循环条件是File对象????这个函数中传入的参数不是集合对象(List<File> list)吗.
                   //File对象不用从集合中取出就可以直接用吗???
   {
    String s = f.getAbsolutePath();
    buf.write(s);
    buf.newLine();
    buf.flush();
   
   
   }
  }
  catch(IOException e)
  {
   throw e;
  }
  finally
  {
   try
   {
    if(buf!= null)
     buf.close();
   }
   catch(IOException e)
   {
    throw e;
   }
  }
   
  
}
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1

查看全部评分

1 个回复

倒序浏览
因为你遍历的list集合里的每一个元素都是File类型所以循环条件是File类型,高级for循环就好比是将所遍历的集合中的每一个元素一一取出赋给冒号前的变量,那么冒号前的变量类型就要与集合中元素类型相同,否则会出现类型转换异常。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马