io和File的综合练习:

news2024/9/25 11:14:24

先来说说字节流和字符流的应用场景
image.png


练习一:

image.png

     /*
       拷贝一个文件夹考虑子文件夹
        */
        //源文件夹路径
        File src = new File("E:\\aaa-FIle学习测试\\bbb");
        //目的文件夹路径
        File dest= new File("E:\\aaa-FIle学习测试\\ccc");

        copy(src,dest);

    }
    public static void copy(File src,File dest) throws IOException {
        //若说目的文件夹不存在,则创建。
        dest.mkdirs();
        //进入源文件夹
        File[] files = src.listFiles();
        //增强for遍历获取其文件和子文件夹
        for (File file : files) {
            //判断文件
            if (file .isFile()){
                //是文件就直接拷贝,拷贝文件使用字节流
                //创建FileInputStream对象,并关联源文件
                FileInputStream fis=new FileInputStream(file);//"E:\\aaa-FIle学习测试\\bbb\\...txt"
                //创建FileOutputStream对象,并关联目的文件                   //file.getName()指文件名,并和目的文件夹拼接
                FileOutputStream fos=new FileOutputStream(new File(dest,file.getName()));//得到"E:\\aaa-FIle学习测试\\ccc\\...txt"
                //读取数据
                byte[]bytes=new byte[1024*1024*5];
                int len;
                while((len= fis.read(bytes))!=-1){
                    fos.write(bytes,0,len);
                }
                fos.close();
                fis.close();
            }else{
                //判断子文件夹,递归             //file.getName()指文件夹名,并和目的文件夹拼接
                copy(file,new File(dest,file.getName()));//第二个参数:"E:\\aaa-FIle学习测试\\ccc\\..."
            }
        }


练习二:

image.png
先了解一个知识:一个数和另一个数异或运算两次会还原
如:
相同是false(0),相异是true(1)

加密操作

 //字节流输入流并关联文件
        FileInputStream  fis=new FileInputStream("..\\ioDemo\\a.txt");

        //字节输出流
        FileOutputStream fos=new FileOutputStream("..\\ioDemo\\b.txt");
        int i;
        while((i= fis.read())!=-1){
            //异或加密
            fos.write(i^10);
        }

        fos.close();
        fis.close();

image.pngimage.png成功加密
解密:

public class Test03 {
    public static void main(String[] args) throws IOException {
        //字节输入流
        FileInputStream  fis=new FileInputStream("..\\ioDemo\\b.txt");

        //字节输出流
        FileOutputStream fos=new FileOutputStream("..\\ioDemo\\c.txt");
        int i;
        while((i=fis.read())!=-1){
           fos.write(i^10);
        };
    }
}

image.pngimage.png成功解密


练习三:

image.png

先写入数据

 //写入
        FileOutputStream fos=new FileOutputStream("..\\ioDemo\\d.txt");
        String str="2-1-9-4-7-8";
        byte[] bytes = str.getBytes();
        fos.write(bytes);


        fos.close();

再提取数据,把数字部分拿出来

         //读取
        FileReader fr = new FileReader("..\\ioDemo\\d.txt");

        //定义集合放数字
        ArrayList<Integer> list = new ArrayList<>();
        int b;//当前获取到的ascii值
        int i = 1;//用来记录当前获取的位置
        while ((b = fr.read()) != -1) {
            //发现规律:分布在奇数的位置1、3、5、7、9
            if (i % 2 != 0) {
                System.out.println((char) b);
                list.add(Character.getNumericValue((char) b));//调用方法变成int类型放入集合,其实这里转为int无意义,
                                                                         //因为放入还是放的字符
            }
            i++;
        }
        System.out.println(list);//[2, 1, 9, 4, 7, 8]

        //使用stream流:升序排序
        List<Integer> sorted = list.stream().sorted().collect(Collectors.toList());
        System.out.println(sorted);//[1, 2, 4, 7, 8, 9]

        //输出
        FileWriter fw = new FileWriter("..\\ioDemo\\d.txt");

        //遍历写入
        for (int j = 0; j < sorted.size(); j++) {
            if (j < sorted.size() - 1) {
                fw.write(sorted.get(j) + "-");
            } else {
                //如果是输出最后一个就不要“-”
                fw.write(sorted.get(j) + "");
            }
        }
        //关流
        fw.close();
        fr.close();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1439020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

next项目页面性能调优

next项目页面性能调优 一般来说性能优化可以分为加载时、运行时两部分的优化。 扩展参考链接&#xff1a; 前端性能优化 24 条建议 Webpack 4进阶–从前的日色变得慢 &#xff0c;一下午只够打一次包 Webpack 分包优化首屏加载 参考指标 FCP&#xff08;First Contentful P…

《MySQL 简易速速上手小册》第3章:性能优化策略(2024 最新版)

文章目录 3.1 查询优化技巧3.1.1 基础知识3.1.2 重点案例3.1.3 拓展案例 3.2 索引和查询性能3.2.1 基础知识3.2.2 重点案例3.2.3 拓展案例 3.3 优化数据库结构和存储引擎3.3.1 基础知识3.3.2 重点案例3.3.3 拓展案例 3.1 查询优化技巧 让我们来聊聊如何让你的 MySQL 查询跑得像…

【Linux】vim的基本操作与配置(上)

Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦&#xff01; 那么废话不多说&#xff0c;咱们直接进入正题&#xff01; 1.初识vim vim是一款多模式的文本编辑器&#xff0c;可以对一个文件进行编辑操作。 它一共有三个模…

【射影几何13 】梅氏定理和塞瓦定理探讨

梅氏定理和塞瓦定理 目录 一、说明二、梅涅劳斯&#xff08;Menelaus&#xff09;定理三、塞瓦(Giovanni Ceva&#xff09;定理四、塞瓦点的推广 一、说明 在射影几何中&#xff0c;梅涅劳斯&#xff08;Menelaus&#xff09;定理和塞瓦定理是非常重要的基本定理。通过这两个定…

09 AB 10串口通信发送原理

通用异步收发传输器&#xff08; Universal Asynchronous Receiver/Transmitter&#xff0c; UART&#xff09;是一种异步收发传输器&#xff0c;其在数据发送时将并行数据转换成串行数据来传输&#xff0c; 在数据接收时将接收到的串行数据转换成并行数据&#xff0c; 可以实现…

【数据分享】1929-2023年全球站点的逐年平均降水量(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全…

训练集,验证集,测试集比例

三者的区别 训练集&#xff08;train set&#xff09; —— 用于模型拟合的数据样本。验证集&#xff08;validation set&#xff09;—— 是模型训练过程中单独留出的样本集&#xff0c;它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时…

DevOps落地笔记-17|度量指标:寻找真正的好指标?

前面几个课时端到端地介绍了软件开发全生命周期中涉及的最佳实践&#xff0c;经过上面几个步骤&#xff0c;企业在进行 DevOps 转型时技术方面的问题解决了&#xff0c;这个时候我们还缺些什么呢&#xff1f;事实上很多团队和组织在实施 DevOps 时都专注于技术&#xff0c;而忽…

【力扣】查找总价格为目标值的两个商品,双指针法

查找总价格为目标值的两个商品原题地址 方法一&#xff1a;双指针 这道题和力扣第一题“两数之和”非常像&#xff0c;区别是这道题已经把数组排好序了&#xff0c;所以不考虑暴力枚举和哈希集合的方法&#xff0c;而是利用单调性&#xff0c;使用双指针求解。 考虑数组pric…

零代码3D可视化快速开发平台

老子云平台 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。此技术已经在全球申请了专利…

力扣优选算法100道——【模板】前缀和(一维)

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 目录 &#x1f6a9;了解题意 &#x1f6a9;算法原理 &#x1f388;设定下标为1开始 &#x1f388;取值的范围 &#x1f6a9;实现代码 &#x1f6a9;了解题意 第一行的3和2&#xff0c;3代表行数&#xff0c;2代表q次查询(…

【Java数据结构】ArrayList和LinkedList的遍历

一&#xff1a;ArrayList的遍历 import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** ArrayList的遍历*/ public class Test {public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(5);list…

MATLAB环境下生成对抗网络系列(11种)

为了构建有效的图像深度学习模型&#xff0c;数据增强是一个非常行之有效的方法。图像的数据增强是一套使用有限数据来提高训练数据集质量和规模的数据空间解决方案。广义的图像数据增强算法包括&#xff1a;几何变换、颜色空间增强、核滤波器、混合图像、随机擦除、特征空间增…

寒假作业2024.2.6

1.现有无序序列数组为23,24,12,5,33,5347&#xff0c;请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用直接插入排序实现升序排序 函数4:请使用插入排序实现升序排序 #include <stdio.h> #include <stdl…

一个坐标系查询网站python获取所有坐标系

技术路线选择 我是使用的vue 3开发的网页界面&#xff0c;element-plus构建网页组件&#xff0c;openlayer展示地图&#xff0c;express提供后端API&#xff0c;vercel进行在线部署。 python获取所有坐标系 想要展示所有坐标系&#xff0c;那需要先获取坐标系&#xff0c;怎么…

【开源】基于JAVA+Vue+SpringBoot的贫困地区人口信息管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…

机器人学、机器视觉与控制 上机笔记(2.1章节)

机器人学、机器视觉与控制 上机笔记&#xff08;2.1章节&#xff09; 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&#xff0c;想同…

HTTP协议笔记

HTTP协议笔记 参考&#xff1a; &#xff08;建议精读&#xff09;HTTP灵魂之问&#xff0c;巩固你的 HTTP 知识体系 《透视 HTTP 协议》——chrono 目录&#xff1a; 1、说说你对HTTP的了解吧。  1. HTTP状态码。  2. HTTP请求头和响应头&#xff0c;其中包括cookie、跨域响…

AcWing 1238 日志统计(双指针算法)

题目概述 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 N 行。 其中每一行的格式是&#xff1a; ts id表示在 ts 时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长度为 D 的时间段…

《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

文章目录 1.1 MySQL 概览&#xff1a;版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例1.1.3 拓展案例 1.2 安装和配置 MySQL1.2.1 基础知识1.2.2 安装步骤1.2.3 重点案例1.2.4 拓展案例 1.3 基础命令和操作1.3.1 基础知识1.3.2 重点案例1.3.3 拓展案例 1.1 MySQL 概览&#…