Java基础IO之文件学习

文件的构成

  • 文件头信息(Metadata)
  • 文件内容
  • File文件操作类:java.io.File
    注1:java.io.File类是一个普通的类,若要实例化对象,用到以下构造方法
方法解释
File(String pathname)创建指定路径文件对象

new 操作注意事项:

  • 既可以指文件,也可以指文件夹
  • 通过路径创建File:可以使用绝对路径/相对路径
  • 不管路径上是否有这个文件/文件夹,Java中都可以创建得到一个File对象

常见的API方法:

方法解释
boolean exists()测试指定路径中文件或者目录是否存在
boolean isDirectory()判定一个文件是目录
boolean delete()删除文件(若是没有该路径的文件,报错)
boolean createNewFile() throwsIOException创建一个新文件(如果有再创建就报错)
boolean mkdir()创建由此抽象路径命名的目录(new File(“E://tmp/1”).mkdir(),若是E盘没有tmp目录就报错)
boolean mkidrs()创建由此抽象路径命名的路径,包括任何必需但不存在的父目录 (new File(“E://tmp/1”).mkdirs(),若是没有tmp目录就)
Strings getAbsolutePath()返回此抽象路径名的绝对路径名字符串
String getPath()将此抽象路径名转换为路径名字字符串
String getName()返回此抽象路径名表示的文件或目录名称
String getParent()获取父目录的路径
File getParentFile()获取父目录的对象
long lastModified()获取此抽象路径名表示的文件上次修改的时间
long length()获取文件大小(bit)
File[] listFiles()返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件(目录下一级的子文件/子文件夹

应用:遍历某个目录下所有的子文件/子文件夹
先在本地文件中找一个文件:
在这里插入图片描述

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class ListFile {
    public static List<File> listDir(File file) {
        List<File> list = new ArrayList<>();
        //if(file.isDirectory()){
            //获取目录下一级的子文件、子文件夹
            File[] children = file.listFiles();
            if (children != null) {
                for (File ch : children) {
                    //返回的文件列表不包含文件夹
                    if (ch.isDirectory()) { //如果是子文件夹,递归调用获取
                        list.addAll(listDir(ch));
                    } else {
                        list.add(ch);
                    }
//                    //包含文件夹
//                    list.add(ch);
//                    if (ch.isDirectory()) {
//                        list.addAll(listDir(ch));
//                   }
                }
            }
        //}
        return list;
    }
    public static void main(String[] args) {
        File dir = new File("F:\\docs\\api");
        List<File> files = listDir(dir);
        //jdk1.8集合框架使用stream操作(对集合操作使用流操作),可以使用lambda表达式
        files.stream(). //集合的Stream操作,提供更多功能,效率也高
                .filter() //过滤
//                .map() //把集合中的元素映射为另外一种类型
//                .map(f ->{
//                    return f.getName()
//                })
//                .collect() //进行流操作之后重新返回
                forEach(System.out::println);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值