基于文件流操作文件系统

这篇具有很好参考价值的文章主要介绍了基于文件流操作文件系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件流

文件的内容本质上都是来自于硬盘,而硬盘由操作系统管理.
使用java来操作文件,就要用到java的api.

这里涉及一系列的类:

字节流: InputStream和OutputStream是以操作字节为单位(二进制文件).
字符流: Reader和Write是以操作字符为单位(文本文件)

public static void main(String[] args) throws IOException {
        try(InputStream inputStream = new FileInputStream("./testDir/test.txt")) {
            while (true) {
                byte[] bytes = new byte[1024];
                int n =inputStream.read(bytes);
                for (int i = 0; i < n; i++) {
                    System.out.printf("%x ", bytes[i]);
                }
            }
        }
    }
    // hello file
   // 68 65 6c 6c 6f 20 66 69 6c 65

字节数组存储read来的字节数据.
基于文件流操作文件系统,开发语言,java

Scanner

在操作系统中, 操作系统是一个广义的概念,System.in也是一个特殊的文件,对应标准输入.
Scanner也可以来读取文本数据,把读到的字节数据进行转换.
Scanner只适用于读文本文件, 不适合读取二进制文件.

public static void main(String[] args) throws IOException{
        try(InputStream inputStream = new FileInputStream("./testDir/test.txt")) {
            Scanner scanner = new Scanner(inputStream);
            String string = scanner.nextLine();
            System.out.println(string);
        }
    }
    // hello file

Writer

write之前需要打开文件,用完后也需要关闭文件.

public static void main(String[] args) throws IOException {
        try(Writer writer = new FileWriter("./testDir/test1.txt")) {
            writer.write("hello world");
        }
    }
    // test1.txt的内容就被修改为hello world了
    // 如果不想修改test1.txt的内容,使用append方法追加内容就可以了

遍历目录删除指定文件

private static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        // 1.用户输入一个目录
        System.out.println("请输入要搜索的根目录: ");
        File rootPath =new File(scanner.next());
        // 2.用户输入要搜索或删除的关键词
        System.out.println("请输入要搜索或删除的关键词: ");
        String word = scanner.next();
        // 3.判断目录是否合法
        if(!rootPath.isDirectory()) {
            System.out.println("要搜索的目录不合法!!");
            return;
        }
        // 4.遍历目录,从根目录出发,按照深层遍历的方式遍历目录
        scanDir(rootPath, word);
    }

    private static void scanDir(File rootPath, String word) {
        // 1. 列出目录都包含哪些内容
        File[] files = rootPath.listFiles();
        if(files == null || files.length == 0) {
            // 不合法目录
            return;
        }
        // 2.遍历列出的文件,分两种情况讨论
        for(File f : files) {
            System.out.println(f.getAbsolutePath());
            if(f.isFile()) {
                // 3. 如果是普通文件,删除包含关键字的文件
                deleteFile(f, word);
            }else {
                // 3. 继续深层遍历
                scanDir(rootPath,word);
            }
        }
    }

    private static void deleteFile(File f, String word) {
        // 1. 判断f是否包含word
        if(!f.getName().contains(word)) {
            return;
        }
        System.out.println("该文件是: " + f.getAbsolutePath() + "是否要删除(y/n)");
        String choice = scanner.next();
        if(choice.equals("y") || choice.equals("Y")) {
            f.delete();
        }
    }

会遍历根目录,找到所有包含关键字的文件,并询问是否要删除.

把目标文件复制为源文件

public static void main(String[] args) throws IOException{
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入源目标路径: ");
        String src = scanner.next();

        File srcFile = new File(src);
        if(!srcFile.isFile()) {
            System.out.println("不合法的源文件!!");
            return;
        }
        System.out.println("请输入目的目标路径");
        String dest = scanner.next();
        File destFile = new File(dest);
        if(!destFile.isFile()) {
            System.out.println("不合法的目标文件!!");
            return;
        }

        try(InputStream inputStream = new FileInputStream(srcFile);
            OutputStream outputStream = new FileOutputStream(destFile) ){
            while (true) {
                byte[] bytes = new byte[20480];
                int n = inputStream.read(bytes);
                if(n == -1) {
                    System.out.println("eof");
                    break;
                }
                outputStream.write(bytes);
            }
        }
    }

小结

文件流的学习到此结束了, 后面会继续 总结网络方面的知识.
有收获的小伙伴多多支持.文章来源地址https://www.toymoban.com/news/detail-858351.html

到了这里,关于基于文件流操作文件系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在linux(ubantu)操作系统运行c语言文件

    关于linux的其他文章: ​1.linux命令、vi命令、vim命令、shell语法(完整详细) 2.linux(ubantu)系统如何安装vim编辑器以及如何使用vim 3.如何在linux(ubantu)操作系统运行c语言文件 4.如何在Linux(ubantu)系统通过c程序将文档1指定内容替换到文档2的指定内容 5.如何在Linux(ubantu)系统

    2023年04月08日
    浏览(42)
  • PL/1语言 :上古伟大的操作系统IBM System/3603的开发编程语言

    PL/I (Programming Language One,发音为/pi /I w / n/,有时也写为PL/1)[1]是最初由IBM开发的一种过程式、命令式的计算机编程语言。它是为科学、工程、商业和系统编程而设计的。自20世纪60年代引入以来,它一直被学术、商业和工业组织不断使用。[2] PL/1 ANSI标准X3.53-1976于1976年发布。

    2024年02月01日
    浏览(38)
  • 🔥🔥Java开发者的Python快速进修指南:文件操作

    Python提供的文件操作相对于Java来说,确实简单方便许多。不仅操作简单,代码可读性也相对较高。然而,我们需要注意的不仅仅是文件操作的简单性,还有文件操作的各种模式。在Java中,我们并不经常使用像Python中那样的操作模式。 另外,我们还需要注意文件指针的移动。

    2024年02月05日
    浏览(77)
  • 【头歌】——数据分析与实践-基于Python语言的文件与文件夹管理-文本 文件处理-利用csv模块进行csv文件的读写操作

    第1关 创建子文件夹 第2关 删除带有只读属性的文件 第3关 批量复制文件夹中的所有文件 未通过本题,如果您通过了本题欢迎补充到评论区,有时间我会整理进来 第1关 读取宋词文件,根据词人建立多个文件 第2关 读取宋词文件,并根据词人建立多个文件夹 第3关 读取宋词文

    2024年01月25日
    浏览(68)
  • 基于C语言的学生信息管理系统开发

    软件功能描述 功能模块图 2.信息管理模块 功能说明:输入、增加、删除、修改学生信息同时返回上一级 查询模块 功能说明:根据性别民族等查找学生人数、按照课程最高分查询学生信息、按照课程统计学生的平均分数同时返回上一级 成绩排序模块 功能说明:根据课程对学

    2024年02月04日
    浏览(55)
  • 【Linux从入门到精通】文件I/O操作(C语言vs系统调用)

    文章目录 一、C语言的文件IO相关函数操作 1、1 fopen与fclose 1、2 fwrite 1、3 fprintf与fscanf 1、4 fgets与fputs 二、系统调用相关接口 2、1 open与close 2、2 write和read 三、简易模拟实现cat指令 四、总结 🙋‍♂️ 作者:@Ggggggtm 🙋‍♂️ 👀 专栏:Linux从入门到精通  👀 💥 标题:文

    2024年02月13日
    浏览(50)
  • 【操作系统】基于动态优先级的进程调度算法-C语言实现(有代码)

    本文章将会介绍如何编写动态优先级的进程调度算法,并使用从语言实现。 一、什么是动态优先级的调度算法        进程运行一个时间片后,如果进程已占用 CPU时间已达到所需要的运行时间,则撤消该进程;如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行

    2024年02月06日
    浏览(49)
  • 【开源】基于JAVA语言的图书管理系统

    图书管理系统是一个用于管理图书馆资源的软件系统,该系统包括图书馆模块、图书类型模块、图书模块、图书借阅模块和公告模块。 图书馆模块 是系统的核心模块,用于管理图书馆的基本信息,包括图书馆名称、地址、联系方式等。管理员可以通过该模块进行图书馆信息

    2024年01月24日
    浏览(75)
  • 【开源】基于JAVA语言的网上药店系统

    基于 JAVA+Vue+SpringBoot+MySQL 的网上药店系统,包含了 药品类型模块、药品档案模块、药品收藏模块、药品订单模块、药品资讯模块 ,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,网上药店系统基于

    2024年01月18日
    浏览(38)
  • 简易英文统计和加密系统的设计实现(纯C语言实现,包含文件操作、注释多、易理解)

    ❤️作者主页:微凉秋意 🔥系列专栏:数据结构与课程设计 ✅作者简介:后端领域优质创作者🏆,CSDN内容合伙人🏆,阿里云专家博主🏆

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包