IO流-10

 


列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容

 递归调用
代码:

import java.io.*;
class FileDemo3
{
 public static void main(String[] args)
 {
   File dir = new File("d:\\java0217");
   showDir(dir);
 }
 
 public static void showDir(File dir)
 {
  System.out.println(dir);
  File[] files = dir.listFiles();//创建listFiles文件对象
  for(int x=0; x<files.length; x++)
  {
   if(files[x].isDirectory())//判断是否为目录
    showDir(files[x]);//递归调用
   else
    System.out.println(files[x]); 
  }
 }
}

----------------------------------------------------------------------------------------------------


删除一个带内容的目录。
删除原理:
在window中,删除目录从里面往外面删除
既然是从里往外删除,就需要用到递归
代码:
import java.io.*;
class RemoveDir
{
 public static void main(String[] args)
 {
  File dir = new File("d:\\testFile");
  removeDir(dir);
 }
 
 public static void removeDir(File dir)
 {
  File[] files = dir.listFiles();
  
  for(int x=0; x<files.length; x++)
  {
   if(files[x].isDirectory())//判断是否为目录,若是,则递归
    removeDir(files[x]);
   else
    System.out.println(files[x].toString()+":-file-:"+files[x].delete());//输出文件名
  }
  System.out.println(dir+"::dir::"+dir.delete());//输出目录名
 }
}

-------------------------------------------------------------------------------------------------------------
练习:
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中
建立一个java文件列表文件

思路:
1,对指定的目录进行递归
2,获取递归过程所有的java文件路径
3,将这些路径存储到集合中
4,将集合中的数据写入到一个文件中
代码:
import java.io.*;
import java.util.*;
class JavaFileList
{
 public static void main(String[] args)throws IOException
 {
  File dir = new File("d:\\java0217");
 
  List<File> list = new ArrayList<File>();//建立一个集合对象
   fileToList(dir, list);
  
   //System.out.println(list.size());
   File file = new File(dir, "javalist.txt");
   writeToFile(list, file.toString());
  
 }
 public static void fileToList(File dir, List<File> list)
 {
  File[] files = dir.listFiles();
  
  for(File file : files)//增强for循环
  {
   if(file.isDirectory())
    fileToList(file, list);//递归遍历
   else
   {
    if(file.getName().endsWith(".java"))
     list.add(file); //符合条件添加到集合中
   }
  } 
  
 }
 public static void writeToFile(List<File> list, String javaListFile)throws IOException
 {
  BufferedWriter bufw = null;
  try
  {
   bufw = new BufferedWriter(new FileWriter(javaListFile)); 
   
   for(File f : list)
   {
    String path = f.getAbsolutePath();//获取绝对路径
    bufw.write(path);//把路径名称写入文件
    bufw.newLine();
    bufw.flush();
   }
  } 
  catch(IOException e)
  {
   throw e ;
  }
  finally
  {
   try
   {
    if(bufw!=null)
     bufw.close(); //关闭流
   } 
   catch(IOException e)
   {
    throw e; 
   }
  }
 }
}

-------------------------------------------------------------------------

 个人总结:递归遍历是自身调用自己,递归要防止内存溢出,

选择指定的文件要用到集合,在递归中判断

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值