4月11号总结

news2025/6/8 20:22:05

java学习

一.io流

简介:io,i代表in,指的是输入,o代表输出。io流是用于处理输入和输出数据的机制。Java的io流主要分为字节流和字符流两种类型。这些流可以用于读取和写入不同类型的数据,如文本,图片,声音等。

1.字节输入流
1.1 字节输入流读取单个字节

我们首先需要实例化一个FileInputStream对象,并且指向一个文件,这里我们先用文本文件。

对对象调用read方法。

InputStream s1=new FileInputStream("src\\io\\12.txt");
        int b1;
        b1=s1.read();
        System.out.println(b1);
        s1.close();

文件内部

这里是读取了字符的ASCll码值,可以将其转成字符。

InputStream s1=new FileInputStream("src\\io\\12.txt");
        int b1;
        b1=s1.read();
        System.out.println((char)b1);
        s1.close();

我们还可以用循环将字符一次性读取完。

因为当文件数据读取完后,再读取会返回-1,所以可以利用这个特性去写循环代码。

 InputStream s1=new FileInputStream("src\\io\\12.txt");
        int b1;
        while ((b1= s1.read())!=-1)
        {
            System.out.print((char) b1);
        }
        s1.close();

注意:在utf-8编码格式中中文占3个字节,所以文本有中文会读取异常。

需要注意的是,我们在往后的使用中,文件的数据通常有几十万个字节,如果我们一个一个读取就会需要循环几十万次,这样效率太低了,所以我们可以一次读取多个字节。

1.2 字节输入流读取多个字节

我们可以使用数组,每次最多装的字节数就是数组的容量。

InputStream s1=new FileInputStream("src\\io\\12.txt");
        byte[] buffer=new byte[3];
        int length=s1.read(buffer);
        System.out.println(new String(buffer, 0, length));
        s1.close();

这里我们设置每次读取3个字节,然后用字符串转换输出。

我们也可以用循环输出全部字节。

 InputStream s1=new FileInputStream("src\\io\\12.txt");
        byte[] buffer=new byte[3];
        int length;
        while ((length=s1.read(buffer))!=-1)
        {
            System.out.print(new String(buffer, 0, length));
        }
        s1.close();

那这里为什么又能输出中文了呢?

因为在输出中文时,是一次性将中文所占的三个字节全部拿出了,如果再整合成了一个字符,如果你换一下文本前面字母数字的个数,输出还是会异常。

通过字节输入流读取多个字节可以自定义选择读取的字节数,并且也可以加快读取速度。

2.字节输出流

2.1 字节输出流读取单个字符

这里和输入的格式也是一样,只是实例化的对象变为FileOutputStream,调用write方法可以写入你想要写入的字符。

 OutputStream r1=new FileOutputStream("src\\io\\12.txt");
        r1.write('1');
        r1.write('2');
        r1.write('3');
        r1.write('4');
        
        r1.close();

里面也可以放入ASCll码值,比如放入97,就会存入'a'。

2.2字节输出流读取多个字符

还是和上面一样使用到数组。

  OutputStream r1=new FileOutputStream("src\\io\\12.txt");
        byte[] bytes={98,99,100,101,102,103,104};
        r1.write(bytes);

        r1.close();

如果想不覆盖原文件内容而是直接追加,那我们只需要在文件路径后面加true。

 OutputStream r1=new FileOutputStream("src\\io\\12.txt",true);
        byte[] bytes={98,99,100,101,102,103,104};
        r1.write(bytes);

        r1.close();

字节流由于其特性,可以输入输出任何数据,但是对文本文件的输入输出的效果却比不上字符流方便,所有在处理文本文件尽量使用字符流,也可以很好对中文进行处理。

3.字符输入流

3.1 字符输入读取单个字符

这里使用FileReader示例化对象,也是调用read方法,可以输入中文。

循环输入全部字符

Reader r1=new FileReader("src\\io\\12.txt");
        int c;
        while ((c=r1.read())!=-1) {
            System.out.print((char)c);
        }
        r1.close();
3.2 字符输入读取多个字符

使用字符数组

 Reader r1=new FileReader("src\\io\\12.txt");
        int c;
        char[] buffer=new char[4];
        r1.read(buffer);
        System.out.println(new String(buffer, 0, 4));
        r1.close();

循环读取

 Reader r1=new FileReader("src\\io\\12.txt");
        int c;
        char[] buffer=new char[4];
        while ((c=r1.read(buffer))!=-1)
        {
            System.out.println(new String(buffer, 0, c));
        }
        r1.close();

4.字符输出流

4.1 字符输出流读取单个字符

实例化FileWriter对象,然后调用write方法,直接往里面放字符。

 Writer r1=new FileWriter("src\\io\\12.txt");
        r1.write('1');
        r1.write('王');
        
        
        r1.close();
4.2 字符输出流读取多个字符

可以直接在writer方法里面放字符串。

 Writer r1=new FileWriter("src\\io\\12.txt");
        r1.write("你好世界");
        
        r1.close();

也可以输出部分,方法起始点和长度即可。

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

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

相关文章

【MATLAB 预测算法教程】_1粒子群算法优化BP神经网络预测 - 教程和对应MATLAB代码

本文以MATLAB自带的脂肪数据集为例,将数据保存在EXCEL工作簿内,方便替换数据使用,以下介绍粒子群算法优化BP神经网络预测的MATLAB代码编写,主要流程包括1. 读取数据 2.划分训练集和测试集 3.归一化 4.确定BP神经网络的隐含层最优节点数量 5. 使用粒子群算法优化BP的神经网络…

C++模板初阶(个人笔记)

模板初阶 1.泛型编程2.函数模板2.1函数模板的实例化2.2模板参数的匹配规则 3.类模板3.1类模板的实例化 1.泛型编程 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 //函数重载 //交换函数的逻辑是一致的&#xff0c…

探索设计模式的魅力:MVVM模式在AI大模型领域的创新应用-打破传统,迎接智能未来

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 MVVM模式在AI大模型领域的创新应用-打破传统迎接智能未来 🚀 “在人工智能的领域里&a…

实验8 内置对象session

一、实验目的 掌握怎样在JSP中使用内置对象session 二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握session的用法。【参考课本4.6.5 】 三、源代码以及执行结果截图&#xff1a; choiceGrade.jsp <% page language"java" content…

顺序表实战——基于顺序表的通讯录

前言&#xff1a;本篇文章主要是利用顺序表作为底层&#xff0c; 实现一个通讯录。偏向于应用&#xff0c; 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友&#xff0c; 如果顺序表不会写&#xff0c; 或者说没有自己实现过&#xff0c; 请移步学习顺序表相关内…

代码随想录算法训练营Day14|二叉树理论基础和递归遍历

代码随想录卡哥视频 理论基础 需要了解 二叉树的种类&#xff0c;存储方式&#xff0c;遍历方式 以及二叉树的定义 文章讲解&#xff1a;代码随想录 递归遍历 &#xff08;必须掌握&#xff09; 二叉树的三种递归遍历掌握其规律后&#xff0c;其实很简单 题目链接/文章讲解/…

vue快速入门(十四)reduce求和

注释很详细&#xff0c;直接上代码 上一篇 新增内容 非嵌套情况求和嵌套情况求和 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

详解Spring event如何优雅实现系统业务解耦、实现原理及使用注意项

1.概述 在我们平时的项目业务系统开发过程中&#xff0c;一个需求功能的业务逻辑经常出现主线业务和副线业务之分。比如&#xff0c;在当下移动端电商app进行注册账号操作&#xff0c;注册成功之后会发送短信、邮箱、站内信等通知&#xff0c;发放红包活动抵用券&#xff0c;推…

注意力机制篇 | YOLOv8改进之清华开源ACmix:自注意力和CNN的融合 | 性能速度全面提升

前言:Hello大家好,我是小哥谈。混合模型ACmix将自注意力机制和卷积神经网络进行整合,使其同时具有自注意力机制和卷积神经网络的优点。这是清华大学、华为和北京人工智能研究院共同发布在2022年CVPR中的论文。ACmix结合了自注意力机制和卷积神经网络的优势,以提高模型的性能…

Java+BS +saas云HIS系统源码SpringBoot+itext + POI + ureport2数字化医院系统源码

JavaBS saas云HIS系统源码SpringBootitext POI ureport2数字化医院系统源码 医院云HIS系统是一种运用云计算、大数据、物联网等新兴信息技术的业务和技术平台。它按照现代医疗卫生管理要求&#xff0c;在特定区域内以数字化形式收集、存储、传递和处理医疗卫生行业的数据。通…

ios包上架系列 二、Xcode打应用市场ipa包

打包的时候一定要断开网络&#xff0c;上线包名只能在打包机配置 检查是否是正式环境&#xff0c;先在模拟器上运行 1、版本名称和本号号记得在这里更改&#xff0c;否则不生效 原因 &#xff1a;info.list <string>$(FLUTTER_BUILD_NAME)</string><key>CFB…

深入剖析UDP反射放大攻击原理及其有效防护策略

引言 随着互联网的飞速发展和业务复杂性的提升&#xff0c;网络安全问题日益凸显&#xff0c;其中分布式拒绝服务&#xff08;DDoS&#xff09;攻击成为危害最为严重的一类网络威胁之一。UDP反射放大攻击作为一种高效的DDoS手段&#xff0c;因其攻击成本低廉、威力巨大&#x…

【教学类-51-01】20240411动物皮毛图片的彩色打印PDF制作(一页两张图片,2个表格)

作品展示 背景需求&#xff1a; 为了便于快速做出A4两份图片的效果&#xff0c;设计以下代码&#xff0c;进行图片的PDF合成打印 代码参考&#xff1a; 【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具-CSDN博客文章浏览阅读531次&#xff0c;点赞8次&#xff0c;收…

机器学习和深度学习--李宏毅(笔记与个人理解)Day11-12

Day11 when gradient is small…… 怎么知道是局部小 还是鞍点&#xff1f; using Math 这里巧妙的说明了hessan矩阵可以决定一个二次函数的凹凸性 也就是 θ \theta θ 是min 还是max&#xff0c;最后那个有些有些 哈 是一个saddle&#xff1b; 然后这里只要看hessan矩阵是不…

vue快速入门(十三)v-model的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容 数据双向绑定数据清空方法 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-…

免重装系统,直接把家庭版升级为专业版!

前言 前段时间有小伙伴找小白重装系统。一般在重装系统之前&#xff0c;我都会问对方&#xff1a;为什么要重装系统&#xff1f; 结果她和我说&#xff1a;家庭版不好用&#xff0c;想要重装成专业版。感觉专业版更好一些&#xff0c;听起来好像也更厉害一些。 嗯……这个理由…

科技论文和会议录制高质量Presentation Video视频方法

一、背景 机器人领域&#xff0c;许多高质量的期刊和会议&#xff08;如IEEE旗下的TRO&#xff0c;RAL&#xff0c;IROS&#xff0c;ICRA等&#xff09;在你的论文收录后&#xff0c;需要上传一个Presentation Video材料&#xff0c;且对设备兼容性和视频质量有较高要求&#…

4.11作业

服务器端 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器端类 #include<QMessageBox> //消息对话框 #include<QTcpSocket> //客户端类 #include<QList> //链表容器QT_BEGIN_NAMESPACE namespace Ui { cla…

训练营第二十天(二叉树 part06)

训练营第二十天&#xff08;二叉树 part06&#xff09; 654.最大二叉树 力扣题目地址(opens new window) 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出…

蓝桥杯第十三届c++大学B组详解

目录 1.九进制转十进制 2.顺子日期 3.刷题统计 4.修剪灌木 5.x进制的减法 6.统计子矩阵 7.积木画 8.扫雷 9.李白打酒 10.砍竹子 1.九进制转换十进制 题目解析&#xff1a;就是将2022的每一位拿出来乘以9的n-1次方的和就是最终答案。次方是从0开始的到n-1. #include &…