Java文件操作—IO

本文介绍了Java中如何使用`java.io.File`类进行文件操作,包括创建实例、获取文件信息、判断文件属性、文件的创建、删除、重命名以及目录操作。同时,展示了如何使用字节流和字符流进行文件内容的读取和写入。最后,提供了一个练习案例,演示了如何扫描指定目录,查找并删除特定名称的文件。

目录

创建实例

文件系统相关操作

文件内容相关操作

练习案例


标准库:java.io.File

创建实例

        // 绝对路径
        File f = new File("D:/test.txt");
        // 相对路径
        File f2 = new File("aaa.txt");

文件系统相关操作

都是围绕File展开的

        // 获取父亲
        System.out.println(f.getParent());
        // 获取文件名
        System.out.println(f.getName());
        // 获取路径
        System.out.println(f.getPath());
        //获取绝对路径
        System.out.println(f.getAbsolutePath());
        //获取化简过的路径
        System.out.println(f.getCanonicalPath());
        // 文件是否存在
        System.out.println(f.exists());
        // 是否是目录
        System.out.println(f.isDirectory());
        // 是否是文件
        System.out.println(f.isFile());

        // 创建文件
        System.out.println(f.createNewFile());
        // 删除文件
        f.delete();
        // 在程序退出时删除,一般用于临时文件
        f.deleteOnExit();

        // 创建目录
        f.mkdir();
        // 创建多级目录
        f.mkdirs();

        // 重命名操作
        f.renameTo(f2);

文件内容相关操作

字节流(二进制)InputStream(读) / OutputStream(写) ——操作单位:字节

字符流(文本)Reader(读) / Write(写)——操作单位:字符

public class Demo2 {
    public static void main(String[] args) {
        // InputStream 是一个抽象类
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream("test.txt");
            // 按照字节方式读文件,一个字节一个字节读出来
            while (true) {
                int b = inputStream.read();
                if (b == -1) {
                    break;
                }
                System.out.println(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

练习案例

扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件

// 根据指定的路径,对路径进行遍历,删除符合要求的文件
public class test {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要扫描的目标路径");
        String rootDirPath = sc.next();
        // 判定路径是否合法
        File rootDr = new File(rootDirPath);
        if (!rootDr.isDirectory()) {
            System.out.println("您输入的路径不合法");
            return;
        }
        // 输入要删除的文件
        System.out.println("请输入要删除的文件名:");
        String deleteFileName = sc.next();
        // 遍历当前目录,找到所有匹配的文件
        List<File> result = new ArrayList<>();
        // 通过 scanDir 这个方法,把所有的 deleteFileName 匹配的文件存入 result 中
        scanDir(rootDr, deleteFileName, result);
        // 进行删除
        for (File f: result) {
            System.out.println(f.getCanonicalPath() + "该文件是否确认删除?y/n");
            String choice = sc.next();
            if (choice.equals("y")) {
                f.delete();
                System.out.println(f.getCanonicalPath() + "该文件已删除");
            }
        }
    }

    // 递归子目录
    private static void scanDir(File rootDir, String deleteFileName, List<File> result) throws IOException {
        // 罗列出 rootDir 下都有哪些文件
        File[] files = rootDir.listFiles();
        for (File f : files) {
            System.out.println("扫描了文件:" + f.getCanonicalPath());
            if (f.isFile()) {
                if (f.getName().equals(deleteFileName)) {
                    result.add(f);
                }
            } else if (f.isDirectory()) {
                scanDir(f, deleteFileName, result);
            }
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值