ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java文件操作—IO

2022-10-01 21:07:50  阅读:42  来源: 互联网

标签:


标准库: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);
            }
        }
    }
}

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有