黑马程序员--File类的笔记(二)—— 一些应用的小例子

---------------------- android培训java培训、期待与您交流! ----------------------

今天又是看了一天的视频,毕老爷真是好帅啊。那种对知识点的讲解,好精辟啊!

以下程序虽小,但是都很好用啊,留起来以后必有大用啊。

文件列表

1.listRoot方法

listRoot获取系统的根路径,也就是磁盘的盘符

public static void listRootDemo()
    {
        File []files = File.listRoots();
        for(Filefile : files)
        {
            System.out.println(file);
        }


2.list 方法

list方法是用来得到file对象的目录文件列表 ,返回是 String [ ]

注意

 调用list方法的file对象必须是封装了一个目录,并且该目录必须存在。

public static void listDemo()
    {
        File f =new File("c:\\");
        String []names = f.list();
        for(Stringname : names)
        {
            System.out.println(name);
        }
    }

 过滤文件

文件过滤的代码

import java.io.File;
import java.io.FilenameFilter;
 
public class FileDemo4 {

    public staticvoid main(String[] args) {
        // TODOAuto-generated method stub
     File f =new File ("c:\\");
     String[]names = f.list(new FilenameFilter() {
       
        @Override
        publicboolean accept(File dir, String name) {
            //File dir 指的是的File 的目录,name是文件的名字
            returnname.endsWith(".txt");
        }
    });
     for(Stringname : names)
     {
         System.out.println(name);
     }
    }
 
}


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

因为目录中还有目录,只要使用同一个列出目录的功能函数完成即可。在列出过程中出现的还是目录的话,还可以在次掉用本功能。这种表现形式,或者编程方法称为递归。

使用递归应注意

     1.限定条件

     2.要注意递归的次数,尽量避免内存溢出的情况。

import java.io.File;
 
public class FileDemo5 {

    public staticvoid main(String[] args) {
        // TODOAuto-generated method stub
        File dir= new File("F:\\我的文档");
        showDir(dir);
 
    }
    public staticvoid showDir(File fir)
    {
        System.out.println(fir);
        File []files = fir.listFiles();
        for(Filefile : files)
        {  
            if(file.isDirectory())
            {
                showDir(file);
            }
            else
                System.out.println(file);
        }
    }
 
}


 将一个指定目录下的Java文件的绝对路径,存储到一个文本文件中。建立一个Java文件列表

思路:

1.对指定的目录进行递归扫描

2.过去递归过程中所有的Java文件的路径

3.将这些路径存储到集合

4.将集合中的数据写入到一个文件中。

代码如下:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
public class FileDemo7 {
    public staticvoid main(String[] args) {
        // TODOAuto-generated method stub
        File fir= new File(".");
        List<File>list = new ArrayList<File>();
        fileToList(fir,list);
        System.out.println(list.size());
        writeToFile(list,"C:\\writer.txt");
 
    }
    public staticvoid writeToFile(List<File>list,String javaListFile)
    {
        BufferedWriterbufw =null;
        try {
            bufw= new BufferedWriter(new FileWriter(javaListFile));
            for(Filef:list)
            {
                Stringpath = f.getAbsolutePath();
                bufw.write(path);
                bufw.newLine();
                bufw.flush();
            }
        } catch(IOException e) {
            //TODO Auto-generated catch block
            thrownew RuntimeException("书写文件失败!");
        }
        finally{
            try {
                if(bufw!=null)
                bufw.close();
            }catch (IOException e) {
                //TODO Auto-generated catch block
                thrownew RuntimeException("关闭流资源失败");
            }
        }
    }
    public staticvoid fileToList(File dir,List<File> list)
    {
        File[]files = dir.listFiles();
        for(Filefile: files)
        {
            if(file.isDirectory())
            {
                fileToList(file,list);
            }
            else
            {
                if(file.getName().endsWith(".java"))
                {
                    list.add(file);
                }
            }
        }
       
    }
}




---------------------- android培训java培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值