JavaSE基础自学---IO流--File

IO流概述

  • IO流用来处理设备之间的数据传输,(内存-硬盘)
  • 流:系统资源,Windows系统本身就可以操作设备,各种语言只是使用系统的这个资源
    使用完该资源一定要释放
  • Java对数据的操作是通过流(系统资源)的方式
  • Java对于操作流的对象都在java.io包中
        // 将一个具体的路径封装成File 对象,可以封装成存在的文件,也可以不存在的文件
        File f1 = new File("c:" + File.separator + "abc" + File.separator + "1.txt");//File 已经封装了分隔符
        File f2=new File("C:\\Users\\jackchan\\Desktop\\gggg");
        //File 类常见方法
        String file_name = f2.getName();   //获取名字
        System.out.println(file_name);

        long len = f2.length();   //获取大小
        System.out.println(len);

        String par = f2.getParent(); //获取父目录路径
        System.out.println(par);

--------------------------------------------------------------------------------------------
        //获取路径
        File f1 = new File("abc\\gggg");
        String path1 = f1.getAbsolutePath();//获取绝对路径(具体路径)
        String path2 = f1.getPath();   //获取File封装的路径

        //获取文件最后修改时间
        File f2 = new File("D:\\gggg.txt");
        long time = f2.lastModified();
        Date date = new Date(time);
        DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
        String s1 = df.format(date);
        System.out.println(s1);

        //创建,删除文件
        File f3 = new File("C:\\gg.txt");
        boolean b = f3.createNewFile(); //创建
        boolean b1 = f3.delete();   //删除

        boolean b2 = f3.exists();  //判断文件是否存在

        boolean b3 = f3.mkdir();  //创建目录
        boolean b4 = f3.mkdirs();//创建多级目录

        boolean b5 = f3.isFile();   //判断是否为文件
        boolean b6 = f3.isDirectory();//判断是否为文件夹
        boolean b6 = f3.isHidden();//判断是否为隐藏文件

        File file = new File("D:\\");
        long l = file.getFreeSpace();  //返回分区空闲空间
        long l1 = file.getTotalSpace(); //返回分区大小
        long l2 = file.getUsableSpace();//返回分区空闲空间
---------------------------------------------------------------------------

文件名过滤器 / 文件过滤器

//文件名过滤器
class FilterByName implements FilenameFilter {  
    private String s;

    public FilterByName(String s) {
        this.s = s;
    }

    public boolean accept(File dir, String name) {
        return name.endsWith(s);
    }
}

//文件过滤器
class Filetor implements FileFilter {

    public boolean accept(File pathname) {  //以文件作为参数传入
        return pathname.isFile();  //判断File是否为文件
    }
//    return pathname.getName().endsWith(".class");
}

public class DEMO2 {

    public static void main(String[] args) throws IOException {
        File file = new File("C:\\");

        File[] fs = file.listFiles(new Filetor()); //获取指定目录的 File对象 数组
        for (File f : fs) {
            System.out.println(f + "  " + f.length());
        }
    }
}

递归

  • 递归:函数自身调用自身,功能被重复使用,但每次该功能使用的运算参数不同
  • 注意:一定要定义条件…如果递归次数过多会出现栈溢出
//遍历出所有文件,使用递归
public static void main(String[] args) throws IOException {
        File file = new File("E:\\abc");
        getAll(file);
    }
    //遍历所有文件
    public static void getAll(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) { //判断file是否为文件夹
                getAll(f);
            } else {
                System.out.println(f);
            }
        }
****************************************************
//删除指定文件夹
public static void deletAll(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                System.out.println("文件夹"+f);
                deletAll(f);
            } else {
                System.out.println(f+" : "+f.delete());
            }
        }System.out.println(file+" "+file.delete());
    }
********************************************************
//递归.
    public static int xiangjia(int num){
        if (num==1){
            return 1;
        }return num+xiangjia(num-1);
    }
*********************************************************
   //获取文件夹中.dll的文件,存入集合中,利用递归
    public static List<File> get(File file) {
        List<File> list = new ArrayList<>();
        FileTor ff = new FileTor();
        select(file, list, ff);
        return list;
    }

    public static void select(File file, List<File> al, FileFilter ff) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                select(f, al, ff);
            } else {
                if (ff.accept(f)) { //过滤
                    al.add(f);
}} } }}

class FileTor implements FileFilter {
    public boolean accept(File pathname) {
        return pathname.getName().endsWith(".dll");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值