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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邝雄伟 中级黑马   /  2013-2-2 00:01  /  1283 人查看  /  3 人回复  /   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

查看全部评分

3 个回复

倒序浏览
for(File f:list)//为什么这个高级for循环用的循环条件是File对象????这个函数中传入的参数不是集合对象(List<File> list)吗.
                   //File对象不用从集合中取出就可以直接用吗???
关于这个问题,我觉得首先你定义了泛型的接收参数
public static void xie(String javalist,List<File> list)throws IOException
<File>这个泛型类型。

泛型  有一个功能就是把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。

也就是 说你接收的参数类型有类型限制,这就是类型约束。          所以你的增强for循环的时候参数类型已经指定为File类了。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
"为什么这个高级for循环用的循环条件是File对象????这个函数中传入的参数不是集合对象(List<File> list)吗."
File 是只里面的对象f的 类型 而不是集合对象 List <File>

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
1、首先你将文件的路径封装成File对象,再存储到list集合中,那现在list集合众的元素是什么类型呢?当然是File类型;
2、所以在for遍历的时候,类型是File,

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马