韩顺平0基础学java——第31天

news2024/11/24 6:43:37

p612-637

IO流

IO流原理及流的分类
Java lO流原理
1.I/O是Input/Output的缩弓,IV/O技术是非常实用的技术,用于处理数据传输。
如读/写文件,网络通讯等。
2. Java程序中,对于数据的输入/输出操作以”流(stream)”的方式进行。

3. java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方
法输入或输出数据

字节流:二进制文件

字符流:文本文件

Java的IO流共涉及40多个类,心儿都碎了

字节流

lnputStream:字节输入流

lnputStream抽象类是所有类字节输入流的超类lnputStream常用的子类
1.FilelnputStream:文件输入流
2.BufferedInputStream:缓冲字节输入流

3.ObjectInputStream:对象字节输入流

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Day31 {
    public static void main(String[] args) {
        new Day31().read1();
    }
    FileInputStream fileInputStream = null;

    public void read1(){
        String filePath = "e:\\JAVA\\Ioliu\\day31.txt";
        int readData = 0;
        try {
            fileInputStream = new FileInputStream(filePath);

           while((readData = fileInputStream.read())!=-1){
               //这里汉字乱码了。它按照一个一个字节读取的,而UTF-的格式汉字是3个字节
这里推荐用字符流。目前这种是一个一个字节读,效率比较低。
               System.out.println((char)readData);
           }
        }  catch (IOException e) {
            e.printStackTrace();
        }finally {
            //一定要关闭流,不然浪费资源。
            System.out.println("结束");
            try {
                fileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 OutputStream:字节输出流

public void writeFile(){
    //创建输出流

    String filePath = "D:\\madake\\mdk1.txt";
    FileOutputStream fileOutputStream = null;

    try {
        fileOutputStream = new FileOutputStream(filePath, true);//如果不写这个true就会覆盖

        //写入一个字节
       // fileOutputStream.write('m');

        //写入字符串
        String str = "aaaahello!";
       // fileOutputStream.write(str.getBytes());//方法1

        fileOutputStream.write(str.getBytes(),0,str.length());//方法2:0是起始位置,后面的长度是你要写入的长度




    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        try {
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

文件拷贝

边读编写,使用循环。

buf等使用。


字符流

FileReader和 FileWriter是字符流,即按照字符来操作io


FileReader相关方法:

1) new FileReader(File/String)
2) read:每次读取单个字符,返回该字符,如果到文件末尾返回-1

3) read(char):批量读取多个字符到数组,返回读取到的字符数,如果读到文件末尾返回-1

相关APl:
1) new String(char门:将char[]转换成String
2) new String(char[.off,len):将char[的指定部分转换成String

FileWriter常用方法

FileWriter常用方法
1) new FileWriter(File/String):覆盖模式,相当于流的指针在首端
2) new FileWriter(File/String,true):追加模式,相当于流的指针在尾端.

3) write(int):写入单个字符
4) write(char[]):写入指定数组
5) write(char[].off,len):写入指定数组的指定部分

6) write (string):写入整个字符串
7)write(string.off,len):写入字符串的指定部分
相关APl: String类:toCharArray:将String转换成char[注意:
FileWriter使用后,必须要关闭(close)或刷新(flush),否则写入不到指定的文件!

节点流和处理流

节点流和处理流的区别和联系


1.节点流是底层流/低级流,直接跟数据源相接。
2.处理流包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。
3.处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连[模拟修饰器设计模式]
处理流的功能主要体现在以下两个方面:
1.性能的提高:主要以增加缓冲的方式来提高输入输出的效率。
2操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便

对象流


●对象流-ObjectlnputStream和ObjectOutputStream
>看一个需求
1.将int num = 100这个int数据保存到文件中,注意不是100数字,而是int 100,并且,能够从文件中直接限复int 100
2将Dog dog = new Dog(“小黄”,3)这个dog对象保存到文件中,并且能够从文件恢复.·

3.上面的要求,就是能够将基本数据类型或者对象进行序列化和反序列化操作
>序列化和反序列化
1.序列化就是在保存数据时,保存数据的值和数据类型

2反序列化就是在恢复数据时,恢复数据的值和数据类型,注:反序列化的顺序需要和序列化的顺序一致。
3.需要让某个对象支持序列化机制,则必须让其类是可序列化的,为了让某个类是可序列化的,
必须实现如下两个接口之一:
>Serializable 这是一个标记接口,里面没有任何方法

>Externalizable 里面有方法需要实现,一般推荐上面的

不同包下的类导入、修改序列化的类问题:0630_韩顺平Java_ObjectInputStream_哔哩哔哩_bilibili

一些处理流

节点流和处理流
>注意事项和细节说明
1)读写顺序要一致
2)要求实现序列化或反序列化对象,需要实现 Serializable
3)序列化的类中建议添加SerialVersionUID,为了提高版本的兼容性:当你修改这个类的时候,只会觉得是版本的修改,而不是全新的类。
4)序列化对象时,默认将里面所有属性都进行序列化,但除了static或transient修饰的成员

5)序列化对象时,要求里面属性的类型也需要实现序列化接口
6)序列化具备可继承性,也就是如果某类已经实现了序列化,则它的所有子类也已经默认实现了序列化

 

打印流:

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

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

相关文章

Orangepi Zero2 全志H616 的初识

目录 一、全志H616简介 1.1 为什么学: 1.2 学什么: 1.3 全志H616平台介绍: 二、刷机 系统启动和初始化配置 2.1 需要的工具: 2.2 工具安装: 2.3 刷机: 2.4 登录系统: 2.5 修改登录密码…

Android开发系列(十)Jetpack Compose之Card

Card是一种常用的UI组件,用于显示一个具有卡片样式的容器。Card组件通常用于显示列表项、卡片式布局或任何需要显示边框和阴影的UI元素。 使用Card组件,您可以轻松地创建带有卡片效果的UI元素。以下是一些Card组件的常见属性和功能: elevati…

云计算基础知识

前言: 随着ICT技术的高速发展,企业架构对计算、存储、网络资源的需求更高,急需一种新的架构来承载业务,以获得持续,高速,高效的发展,云计算应运而生。 云计算背景 信息大爆炸时代&#xff1a…

导出 S 参数扫描结果供 INTERCONNECT 使用

导出 S 参数扫描结果供 INTERCONNECT 使用 正文正文 有时候,对于 FDTD 无法直接进行仿真的大型仿真链路,我们需要使用 FDTD 针对单个小的模块进行仿真,再将得到的 S 参数结果导入到 INTERCONNECT 中使用,最终完成整个链路的仿真。通常完成 S 参数扫描后其状态如下图所示:…

CSS 原生属性 CSS文本显示省略号...

效果图: 直接上代码 .header {width: 100%;//使用百分比或者固定宽度,注意使用百分比时要确保父元素使用了百分比宽度height: 50px;line-height: 25px;font-weight: bolder;text-overflow: ellipsis;word-break: break-all;overflow: hidden;display: -…

第3章 小功能大用处-事务与Lua

为了保证多条命令组合的原子性,Redis提供了简单的事务功能以及集成Lua脚本来解决这个问题。 首先简单介绍Redis中事务的使用方法以及它的局限性,之后重点介绍Lua语言的基本使用方法,以及如何将Redis和Lua脚本进行集成,最后给出Red…

圈复杂度.

圈复杂度是衡量代码的重要标准 配置: eslint里面:rules:complexity:[error,10]

CppInsights: 学习C++模版的神器

CppInsights:深入理解C代码的利器 C是一门强大而复杂的编程语言,其复杂性主要体现在语言的多层次抽象和丰富的语法特性上。尽管这些特性使得C能够高效地处理复杂的任务,但也给开发者带来了理解和调试代码的巨大挑战。CppInsights正是在这一背…

DDL-表操作-数据类型

一.DDL-表操作-数据类型 MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期类型。 二.关系表 注意: 无符号和有符号的取值范围不是一样的,无符号需要加上UNSIGNED范围。 BLOB:用来描述二进制数据 TEXT:用来描述字符串 三.定长字符串和变长字符串 c…

vue3实现模拟地图上,站点名称按需显示的功能

很久很久没有更新博客了,因为实在是太忙了,每天都有公司的事情忙不完....... 最近在做车辆模拟地图,在实现控制站点名称按需显示时,折腾了好一段时间,特此记录一下。最终界面如下图所示: 站点显示需求&…

绘制全球各大洲典型流域的时间序列图

流量世界第一、长度第二的亚马逊流域(Amazon)、南美洲第四大、整条河流位于巴西的圣弗朗西斯科流域(Sao Francisco)、世界第四长、北美洲最长的密西西比流域(Mississippi)、欧洲最长的伏尔加流域&#xff0…

数字化转型第三步:数字化业务创新与发展,提升收入和利润

引言:之前笔者的文章发布了企业数字化转型业务部分,如【开源节流】如何通过数字化转型增强盈利能力?企业供应链数字化转型如何做?让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…

CLion2024 for Mac[po] C和C++的跨平台解代码编辑器

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文…

Netty学习(一)——基础组件

根据黑马程序员netty视频教程学习所做笔记。 笔记demo:https://gitee.com/jobim/netty_learn_demo.git 参考博客:https://blog.csdn.net/cl939974883/article/details/122550345 一、概述 1.1 什么是Netty Netty is an asynchronous event-driven netw…

基于改进YOLOv5的安全帽检测算法 | 引入Ghost卷积 + 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之WIoU

前言:Hello大家好,我是小哥谈。为了解决建筑工地、隧道、煤矿等施工场景中现有安全帽检测算法对于小目标、密集目标以及复杂环境下的检测精度低的问题,设计实现了一种基于YOLOv5的改进目标检测算法,记为YOLOv5-GBCW。首先使用Ghos…

【昇思初学入门】第七天打卡-模型训练

训练模型 学习心得 构建数据集。这通常包括训练集、验证集(可选)和测试集。训练集用于训练模型,验证集用于调整超参数和监控过拟合,测试集用于评估模型的泛化能力。 (mindspore提供数据集https://www.mindspore.cn/d…

Fusion WAN:企业出海与全球组网的数字网络底座

众多中国企业与品牌正将目光投向海外市场,积极寻求发展新机遇,并且在这一过程中取得了显著的成果。"出海"战略已经成为一些企业转型升级的关键选择。 随着国内市场的竞争日益激烈,越来越多的企业开始寻求海外市场的拓展&#xff0c…

压电风扇的显著特点及其在电子系统中的应用

压电已经存在了一个多世纪,人们发现某些晶体结构在受到机械应力时产生表面电荷。 这种形式的压电传感器是压电传感器的工作方式。与压电传感器(或发电机)类似,压电致动器(或电机)使用补丁[1,3]形式的压电陶…

探索PHP中的魔术常量

PHP中的魔术常量(Magic Constants)是一些特殊的预定义常量,它们在不同的上下文中具有不同的值。这些常量可以帮助开发者获取文件路径、行号、函数名等信息,从而方便调试和日志记录。本文将详细介绍PHP中的魔术常量,帮助…

2024地理信息相关专业大学排名

在开始之前,不得不提一下今年福耀科技大学不能招生的遗憾,不知道明年是否能一切准备就绪开始招生呢? 如果这所大学能招生了,不知道它有没有地理信息相关专业呢? 言归正转,我们现在就基于公开资料&#xf…