黑马程序员技术交流社区

标题: java集合中的set问题。。。 [打印本页]

作者: 黑马任雪刚    时间: 2012-5-27 17:19
标题: java集合中的set问题。。。
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;
   }
  }
   
  
}
}


作者: 袁培育    时间: 2012-5-27 17:34
因为你遍历的list集合里的每一个元素都是File类型所以循环条件是File类型,高级for循环就好比是将所遍历的集合中的每一个元素一一取出赋给冒号前的变量,那么冒号前的变量类型就要与集合中元素类型相同,否则会出现类型转换异常。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2