Java—IO操作

Java—IO操作

今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结:

IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据流向不同,可以分为:输入流和输出流。 其中主要结构可以用下图来表示:


字符流和字节流的主要区别:

1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

IO流主要可以分为节点流和处理流两大类。

一、节点流类型

该类型可以从或者向一个特定的地点或者节点读写数据。主要类型如下:

类型字符流字节流
File(文件)
FileReader
FileWriter
FileInputStream
FileOutputSream
Memory Array
CharArrayReader
CharArrayWriter
ByteArrayInputStream
ByteArrayOutputSream
Memory String
StringReader
StringWriter
-
Pipe(管道)
PipedReader
PipedWriter
PipedInputSream
PipedOutputSream

二、处理流类型
该类型是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,处理流的构造方法总是要带一个其他流对象作为参数,一个流对象进过其他流的多次包装,叫做流的链接。主要可以分为以下几种:
1、缓冲流(BufferedInPutStream/BufferedOutPutStream和BufferedWriter/BufferedReader)他可以提高对流的操作效率。
写入缓冲区对象:
[java] view plain copy
  1. BufferedWriterbufw=newBufferedWriter(newFileWriter("buf.txt"));
读取缓冲区对象:
[java] view plain copy
  1. BufferedReaderbufr=newBufferedReader(newFileReader("buf.txt"));
该类型的流有一个特有的方法:readLine();一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回,当读到末尾时,返回null,其原理还是与缓冲区关联的流对象的read方法,只不过每一次读取到一个字符,先不进行具体操作,先进行临时储存,当读取到回车标记时,将临时容器中储存的数据一次性返回。
2、转换流(InputStreamReader/OutputStreamWriter)
该类型时字节流和字符流之间的桥梁,该流对象中可以对读取到的字节数据进行指定编码的编码转换。
构造函数主要有:
[java] view plain copy
  1. InputStreamReader(InputStream);//通过构造函数初始化,使用的是本系统默认的编码表GBK。
  2. InputStreamWriter(InputStream,StringcharSet);//通过该构造函数初始化,可以指定编码表。
  3. OutputStreamWriter(OutputStream);//通过该构造函数初始化,使用的是本系统默认的编码表GBK。
  4. OutputStreamwriter(OutputStream,StringcharSet);//通过该构造函数初始化,可以指定编码表。
注意:在使用FileReader操作文本数据时,该对象使用的时默认的编码表,即
FileReader fr=new FileReader(“a.txt”); 与 InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt")); 的意义相同。如果要使用指定表编码表时,必须使用转换流,即如果a.txt中的文件中的字符数据是通过utf-8的形式编码,那么在读取时,就必须指定编码表,那么转换流时必须的。即:
InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"),utf-8);
3、数据流(DataInputStream/DataOutputStream)
该数据流可以方便地对一些基本类型数据进行直接的存储和读取,不需要再进一步进行转换,通常只要操作基本数据类型的数据,就需要通过DataStream进行包装。
构造方法:
[java] view plain copy
  1. DataInputStreamReader(InputStream);
  2. DataInputStreamWriter(OutputStream);
方法举例:
[java] view plain copy
  1. intreadInt();//一次读取四个字节,并将其转成int值
  2. writeInt(int);//一次写入四个字节,注意和write(int)不同,write(int)只将该整数的最低一个8位写入,剩余三个8为丢失
  3. hortreadShort();
  4. writeShort(short);
  5. StringreadUTF();//按照utf-8修改版读取字符,注意,它只能读writeUTF()写入的字符数据。
  6. writeUTF(String);//按照utf-8修改版将字符数据进行存储,只能通过readUTF读取。
注意:在使用数据流读/存数据的时候,需要有一定的顺序,即某个类型的数据先写入就必须先读出,服从先进先出的原则。
四、打印流(PrintStream/PrintWriter)
PrintStream是一个字节打印流,System.out对应的类型就是PrintStream,它的构造函数可以接受三种数据类型的值:1.字符串路径。2.File对象 3.OutputStream
PrintStream是一个字符打印流,它的构造函数可以接受四种类型的值:1.字符串路径。2.File对象 3.OutputStream 4.Writer 对于1、2类型的数据,可以指定编码表,也就是字符集,对于3、4类型的数据,可以指定自动刷新,当该自动刷新为True时,只有3个方法可以用:println,printf,format。
五、对象流(ObjectInputStream/ObjectOutputStream)
该类型的流可以把类作为一个整体进行存取,主要方法有:
Object readObject();该方法抛出异常:ClassNotFountException。
void writeObject(Object):被写入的对象必须实现一个接口:Serializable,否则就会抛出:NotSerializableException


解决Anaconda环境下catkin_make编译报错:Python路径冲突与empy模块缺失 本文详细分析了在Anaconda环境下使用catkin_make编译时出现的Python路径冲突与empy模块缺失问题,提供了快速解决方案和永久性环境配置方法。通过显式指定Python解释器路径或调整Anaconda配置,有效解决编译报错问题,适用于ROS开发与科学计算并行的场景。 阅读详情

相关推荐

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 144

java中的IO操作总结(一)

所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节(我想,文章太长了,谁都没耐心翻到最后) 对于文件内容的操作主要分为两大类 分别是:   字符流   字节流 其中,字符流有两个抽象类:Writer Reader 其对应子类FileWriter和FileReader可实现文件的读写操作...

weixin_30920597的博客 1067

嵌入式常见英文2500词总结

嵌入式常见英文总结

qq_28576837的博客 1万+

Java-IO操作性能对比

在软件系统中,IO速度比内存速度慢,IO读写在很多情况下会是系统的瓶颈。 在java标准IO操作中,InputStream和OutputStream提供基于流的IO操作,以字节为处理单位;Reader和Writer实现了Buffered缓存,以字符为处理单位。 从Java1.4开始,增加NIO(New IO),增加缓存Buffer和通道Channel,以块为处理单位,是双向通道(可读...

L_3890的博客 289

群晖NAS变身私有Git服务器:DS218+部署与TortoiseGit客户端实战指南

本文详细介绍了如何将群晖NAS(如DS218+)变身为私有Git服务器,并配置TortoiseGit客户端实现高效代码管理。通过硬件检查、系统更新、Git Server套件安装及权限配置等步骤,帮助开发者在局域网内搭建安全、高速的代码托管环境,特别适合小团队协作。

weixin_29252171的博客 225

Spyglass实战指南:跨时钟域同步方案深度解析

本文深度解析了Spyglass在跨时钟域同步方案验证中的实战应用。通过真实案例阐述了亚稳态的危害,并详细介绍了从基础的两级同步器到复杂的异步FIFO与握手协议等八大同步方案,以及如何利用Spyglass进行有效配置、检查与问题排查,为提升芯片设计可靠性提供系统性的避坑指南。

weixin_29219189的博客 840

Java IO完全总结(转载)

Java IO江苏 无锡 缪小东       本篇主要讲述IO相关的内容,主要包括:与IO相关的简单的历史背景知识;Java IO的简单分类;与IO设计相关的两个模式;同时列举几个简单的例子;分析其中几个实现的源代码;最后给大家一些简单扩展的例子。治学先治史,下面我们先从简单的历史开始吧! 一、      历史背景       “对语言设计人员来说,创建好的输入/输出系统是一项

为了你 4万+

WGCNA加权基因共表达网络分析(1)简介、原理

WGCNA简介 WGCNA(Weighted Gene Co-Expression Network Analysis, 加权基因共表达网络分析),鉴定表达模式相似的基因集合(module),解析基因集合与样品表型之间的联系,绘制基因集合之间的调控网络并鉴定关键调控基因 WGCNA适用于复杂的转录组数据(样本数目较多) 研究不同器官/组织类型和不同阶段的发育调控、生物和非生物胁迫的不同时间响应机制 WGCNA原理 原理概要 1.构建基因共表达网络:先构建基因共表达网络,通常利用两两基因之间的表达模式来计算

qq_44520665的博客 3万+

java模拟io流_Java之IO流

1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别答案Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1Byte是计算机操作数据的最小单位由8位bit组成 取值(-128-127)Char是用户的可读写的最小单位,在Java里面由16位bit组成 取值(0-65535)Bit 是最小单位 计算机 只能认识 0或者18个字节 是给计算机看的...

weixin_39625429的博客 272

华为OD机试_2025 B卷_模拟消息队列(Python,100分)(附详细解题思路)

时间排序:确保事件处理顺序正确消费者管理:集合操作高效维护状态优先级实现:利用消费者ID自然排序边界处理:正确处理空消费者情况。

测试工程师的成长之路 1121

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1112

java IO操作

原文链接 [https://zhhll.com.cn/2020/java基础/IO/1.java基础之IO操作/] 用户进程发起请求,内核接收到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。 数据输入到buffer需要时间,从buffer复制数据至进程也需要时间,根据在这两段时间内等待方式不同,I/O动作可分为五种模式 - 阻塞I/O - 非阻塞I/O - I/O复用 - 信号驱动I/O - 异步I/O

Lxn2zh的博客 1174

基于STM32L4XX、HAL库的BQ25713RSNR充电芯片驱动程序设计

define BQ25713_I2C_ADDR (0x6B << 1) // 7位地址为 0x6B,HAL库需要左移一位。// 示例:配置 CHARGE_OPTION_0 寄存器:使能充电,使能 ICO(输入电流优化)reg_data |= (EN_CHG_MASK | EN_ICO_MASK);

zhusl6688的博客 406

java io操作_java基础之IO操作

IO操作·文件类的使用(File)·IO中流的基本使用(字符流、字节流、内存流、打印流)·System类对IO的支持·对象序列化的问题在整个的IO操作中,流的操作分为两种:·字节流字节输出流:OutputStream字节输入流:InputStream·字符流字符输出流:Writer字符输入流:ReaderIO操作的基本步骤:在Java的使用io的话,必须要按照以下的几个步骤进行(对文件操作来说):...

weixin_31310737的博客 429

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Java之IO操作全集】

Java IO操作一脉打通!

ypykip博客 566

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java io操作_Java IO 操作

作者:gqk1.1、本次预计讲解的知识点1、 掌握 File 类的使用,并可以使用 File 类进行文件本身的操作;2、 掌握字节流和字符流的使用,并掌握 IO 操作的基本原理;3、 掌握打印流、文件操作流、内存操作流的使用 4、 掌握对象序列化的使用。IO 操作作为整个 JAVA 中最复杂的开发包,将作为一个难点出现,但是要想跨过此部分,就必须对面向对象的基本 概念非常的熟悉,对于抽象类也要熟悉...

weixin_36348080的博客 113

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java io操作_java 中 IO 操作总结

package jdk.util.sourceCode;import java.io.*;/*** 经常会遇到各种 IO 流操作,IO 流操作一般分为两类:字符流和字节流。* 以 "Reader" 结尾都是字符流,操作的都是字符型的数据* 以 "Stream" 结尾的都是字节流,操作的都是 byte 类型的数据* 二者的区别:* 字节流没有缓冲区,是直接输出的;而字符流是先输出到缓冲区,然后在调...

weixin_34740753的博客 258

java io操作 包括什么_java的IO操作

之所以写这个是因为Hadoop的IO与·这个类似 但要比这个深入,而且都还涉及到网络传输原理的五个层次。所以,一步一个脚印。已知: Java程序是通过“流”的形式进行数据的输入和输出的,输入和输出是指应用程序与外部设备及其他计算机进行数据交流的操作。流的概念流是一个抽象的概念,如同电流,可以看做是水流,可以理解是一个输入输出途径。在Java体系中IO是非常庞大的。有这些流操作:1.标准的输入输出流...

weixin_39780784的博客 253

java io例子_java中io操作小例子

//示例1,file基本操作import java.io.File;import java.io.IOException;class FileDemo{public static void main(String args[]){try{File file=new File("file1.txt");System.out.println("文件是否存在: "+file.exists());Syst...

weixin_36079903的博客 196

java io操作 包括什么_java中的IO操作总结

一.InputStream重用技巧(利用ByteArrayOutputStream)对同一个InputStream对象进行使用多次。比如,客户端从服务器获取数据 ,利用HttpURLConnection的getInputStream()方法获得Stream对象,这时既要把数据显示到前台(第一次读取),又想把数据写进文件缓存到本地(第二次读取)。但第一次读取InputStream对象后,第二次再读取...

weixin_32039589的博客 613

Java IO操作详解

在Java编程中,IO(输入输出)是重要的组成部分,Java应用常常需要从外界输入数据或者把数据输出到外界。Java IO的核心用一句话概括:抽象类或接口之中的抽象方法会根据实例化子类的不同,会完成不同的功能。所有的IO操作都在java.io包之中进行定义,而且整个java.io包实际上就是五个类和一个接口: (1)五个类:File、InputStream、OutputStream、Reader、

wei_zhi的博客 7390

Java中IO的高级操作

Java中IO的高级操作

m0_73505556的博客 903

java IO操作知识点

IO流的概念: IO流,将不同的输入输出,以相同的方式操作read(),write();创建不同类型的流,有不同的实现方式,不同类型的流,又有各自特有的操作方式。 无论内部如何工作,所有IO流呈现的都是相同的,简单的模式,程序中流入或流出的一系列数据。 Inputstream、Outputstream: 输入流,输出流的操作超类,支持子类以基本字节的方式操作二进制数据 java.io.InputStream抽象类:基本子类,ByteArrayInputStream,FileInputStr.

qq_56350439的博客 2808

JAVA IO操作笔记

目录1 文件1.1 文件常用操作1.1.1 创建文件1.1.2 获取文件信息 1 文件 文件在程序中以流的形式来操作的,输入流 与 输出流 中的 输入与输出针对的是内存。 File继承关系 1.1 文件常用操作 1.1.1 创建文件 /** * 创建文件 方法1 * <p> * new File(String pathname) */ @Test public void createFile_test01() {

QiuHaoqian的博客 1359

Java中的IO操作

     IO 操作是我以前不太理解的操作。总是觉得很神奇,然后一脸懵逼。今天终于鼓起勇气,认真的学习IO方面的知识。有理解不妥当或者不正确的地方,还请各位大佬指正。一、java的io发生在哪?      这个问题,我们必须首先明确下。io发生在内存和硬盘之间。因为程序在内存中运行。我们需要将硬盘的文件数据读入到内存中,再将数据从内存输出到硬盘中,所以我们就有了IO操作。i和o是分别代表(inpu...

moutain0101的博客 6156

【Java EE】 文件IO的使用以及流操作

IO就是 Input(输入), Output(输出),至于如何判断一个操作是否为输入还是输出,可以以下图的标准作为参考​我们以CPU 作为基准,进入CPU方向的操作就是Input(输入),从CPU方向出去就是Output(输出).文件是一个很广义的概念,在操作系统中把软件资源/ 硬件资源都给抽象为 文件 ,特别是在Linux中一切皆为文件.在此处我们所提的文件,特指的就是。

xiaoxie8023的博客 1861
上一篇: Java web项目开发需要掌握哪些技术?
下一篇: Java基础篇—IO操作
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值