本帖最后由 JarryHorse 于 2015-4-29 16:54 编辑
- /*
- 需求:用File类创建一个包含某文件夹中文件目录的文本文件的代码示例
- */
- import java.io.*; //导入IO中的类
- import java.util.*; //导入集合所在包中的类
- //定义类
- class FileDemo
- {
- //主函数
- public static void main(String[] args)
- {
- //创建一个File对象,传入一个路径的字符串表示
- File fi = new File("d:\\codefile\\Javas");
- //创建一个List集合,用于存放文件名
- List<String> list = new ArrayList<String>();
- //判断一下File表示的路径是否存在,是否是目录
- if (fi.exists())
- {
- if (fi.isDirectory())
- {
- //调用自定义遍历文件夹的方法,将文件夹中的文件名和绝对路径字符串存入list集合中
- dirList(list,fi);
-
- }
- }
-
- //创建一个字符流引用
- BufferedWriter bufw = null;
-
- try
- {
- //创建一个带缓冲的文件字符写入流,传入要写入数据的文件名
- bufw = new BufferedWriter(new FileWriter("dirList.txt"));
- //遍历list集合,将集合中的文件名字符串写入流中,并刷新到目的地
- for (String str:list)
- {
- bufw.write(str);
- bufw.newLine(); //每条换行一次
- bufw.flush(); //刷新
- }
-
- }
- //处理IO异常
- catch (IOException e)
- {
- e.printStackTrace();
- }
- //最后要关流
- finally
- {
- //在里面单独try关流时抛出的异常
- try
- {
- //如果流存在才关
- if (bufw != null)
- {
- bufw.close();
- }
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
-
- }
- }
-
- //定义一个遍历目录中文件的方法
- public static void dirList(List<String> list,File fi)
- {
-
- String[] ff = fi.list();
- if(ff!= null)
- {
- //取出文件夹中的目录和文件的数组,并遍历
- for(String str:fi.list())
- {
- //加入绝对路径
- File file = new File(str).getAbsoluteFile();
- if (file.isDirectory())
- {
- list.add(file.toString());
- dirList(list,file);
- }
- else
- {
- list.add(file.toString());
- }
- }
- }
- }
- }
复制代码 文件夹里面是有大量文件和文件夹的,只读出了第一层目录的文件和文件夹,但是没有递归到文件夹里面读文件,用Eclipse debug时读到递归时直接顺序读下去了,没有跳转递归,找不到哪里出问题了,烦啊!!!!!! |
|