首页 » PHP教程 » phpdiaoyong类技巧_java根本IO流

phpdiaoyong类技巧_java根本IO流

访客 2024-11-25 0

扫一扫用手机浏览

文章目录 [+]

对付任何程序设计措辞而言,输入输出(Input/Output)系统都是非常核心的功能。
程序运行须要数据,数据的获取每每须要外部系统进行通信,外部系统可能是文件、数据库、其他程序、网络、IO设备等。
外部系统比较繁芜多变,那么我们有必要通过某种手段进行抽象、屏蔽外部的差异,从而实现更加便捷的编程

输入(Input)指的是:可以让程序从外部系统得到数据(核心含义是“读”,读取外部数据)。

phpdiaoyong类技巧_java根本IO流

读取硬盘上的文件内容到程序。
例如:播放打开一个视频文件,word打开一个doc文件读取网络上某个位置内容到程序。
例如:浏览器中输入网址后,打开该网址对应的网页内容,下载网络上某个网址的文件读取数据库系统的数据到程序读取某些硬件系统数据到程序

输出(Output)指的是程序输出数据给外部系统,从而可以操作外部系统。
含义是“写”

phpdiaoyong类技巧_java根本IO流
(图片来自网络侵删)
将数据写到硬盘中,例如:我们编辑完一个word文档后,将内容写到硬盘上进行保存将数据写到数据库系统中。
例如:我们注册一个网站会员,实际便是后台程序向数据库中写入一条记录将数据写到某些硬件系统中。
例如:导弹系统导航程序将新的路径输出到飞控子系统,飞控子系统根据数据改动翱翔路径。
2、数据源

数据源分为:源设备、目标设备。

源设备:为程序供应数据,一样平常对应输入流目标设备:程序数据的目的地,一样平常对应输出流3、流

输入/输出流的划分是相对程序而言的,并不是相对数据源。

4、java中四大IO抽象类

InputStream/OutputStream和Reader/Writer类是所有IO流的抽像父类

InputStream:此抽象类是表示字节输入流的所有父类,InputStream是一个抽象类,它不可以实例化,数据的读取须要由它的子类来实现,跟具节点的不同,它派生了不同的节点流子类。
继续自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit)

int read():读取一个字节的数据,并将字节的值作为int类型返回(0-255之间)如果未读出字节则返回-1(返回值为-1表示读取结束)

void close():关闭输入流工具,开释干系系统资源。

5、java中流的观点细分

按流的方向分类:

输入流:数据流从数据源到程序(InputStream、Reader结尾的流)

输出流:数据流从程序到目的地(OutputStream、Writer结尾的流)

按照处理的数据单元分类:

字节流:以字节为单位获取数据、命名上以Stream结尾的流一样平常是字节流

字符流:以字符为单位获取数据,命名以Reader/Writer结尾的流一样平常是字符

按照处理工具不同分类:

节点流:可以直接从数据或目的地读写数据,如FileInputStream,FileReader、DataInputStream

处理流:不直接连接到数据源或目得地,是处理流得流,通过对其他流得处理提高程序的性能。
如BufferedlnputStream、BufferedReader等,处理流也叫包装流

java中IO流的体系分类P334

IO案例

读取文件中的字符

File类的利用

File类的浸染

File类是java供应的针对磁盘中的文件或目录转换工具的包装类。
一个File工具可以代表一个文件或目录,FIle工具可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建、删除等功能。

常用流工具1、文件字节流

FileInputStream通过字节的办法读取文件,适宜读取所有类型的文件(图像、视频、文本文件等)Java也供应了FileReader专门读取文本文件

FileOutputStream通过字节的办法写数据到文件中,适宜所有类型的文件,java也供应了FileWriter专门写入文本文件

1.1文件字节流的输入与输出

字节流可以处理二进制文件,也可以处理文本文件

1.2通过缓冲区提高读写效率

例子:发200斤大米,不用缓冲区一次只能拿走一粒,耗时久,用缓冲区,一次打包20斤,提高了速率

例子:发200斤大米,一次性拿完。

1.4通过字节缓冲流提高读写效率

1.5定义文件拷贝工具类

写个方法用于diaoyongcopy文件,这里复习:static声明的静态方法可以直接用,不用new一个工具

2、 文件字符流

前面先容的文件字节流可以处理所有的文件,如果我们处理的是文本文件,也可以利用文件字符流,它以字符为单位进行操作。

2.1文件字符输入流

2.2文件字符输出流

2.3利用字符流实现文本文件的拷贝处理

3、字符缓冲流

BufferedReader/BufferedWriter增加了缓存机制,大大提高了读写文本文件的效率

3.1字符输入缓冲流

BufferedReader是针对输入流的缓冲流工具,供应了更方便的按行读取的方法;readLine();在利用字符流读取文本文件时,我们可以利用该方法以行为单位进行读取

3.2字符输出缓冲流

BufferedWriter是针对字符字符输出流的缓冲流工具,在字符输出缓冲流可以利用newLine();方法实现换行处理。

3.3通过字符缓冲流实现文本文件的拷贝

4、转换流

5、字符输出流

在java的IO流中专门供应了用于字符输出的流工具PrintWriter、该工具具有自动行刷新缓冲字符输出流,特点是可以按行写出字符串,并且可通过println()方法实现自动换行。

6、字节数组流

ByteArrayInputStream和ByteArrayOutputStream常常用在须要流和数组之间转化的情形!

6.1字节数组输入流

FileInputStream是把文件当作数据源。
ByteArrayInputStream则是把内存中的字节数组工具“当做数据源”

7、数据流

数据流将基本数据类型与字符串类型作为数据源,从而许可程序以与机器无关的办法从底层输入输出流中操作java基本数据类型与字符串类型。

DataInputStream和DataOutputStream供应了可以存取与机器无关的所有java根本类型数据(int、double、String)到程序当中----即不须要对已读取的数据进行类型转换

(基于字节流和字符流将数据存储到文件当中,数据的类型为字节或者字符,没有int和String等类型)

7.1、数据输出流

将数据按照自己的类型输出到为文件当中

7.2数据输入流

读取基于数据输出流的输入到文件当中的数据类型,能够将数据按照原来的数据类型输入到程序当中。

8、工具流

工具的实质是用来组织和存储数据的,工具本身也是数据,那么能不能将工具存储到硬盘上的文件中呢?能不能将工具通过网络传输到另一个电脑呢?我们可以通过序列化和反序列化来实现这些需求。

8.1Java工具的序例化和反序例化

8.1.1序列化和反序列化是什么

当两个进程远程通信时,彼此可以发送各种类型的数据,无论是何种类型的数据,都会以二进制序列的形式在网络上传送,例如:我们可以通过http协议发送字符串信息;我们也可以在网络上直接发送Java工具。
发送方须要把这个Java工具转化成字节序列,才能在网上传播,吸收方则须要把字节序列在规复为Java工具才能正常读取。
(普通的说序列化为发送发将发送的java工具 转换成字节放入到发送包叫做序列化,通过网络传播到吸收方,吸收方在将字节转换成java工具叫做反序列化)

把Java工具转换为字节序列过程称为工具的序列化,把字节序列规复为Java工具的过程称为工具的反序列化。

序列化浸染:

持久化:把工具的字节序列永久的保存到硬盘上,常日存放在一个文件中

网络通信:在网络上传送工具的字节序列。
比如:做事器之间的数据通信、工具通报。

ObjectOutputStream和ObjectInputStream为处理流工具

8.2操作基本数据类型

数据流只能实现对基本数据类型和字符串类型的读写,并不能对java工具进行读写操作(字符串除外),但是在工具流中除了能实现对基本数据类型进行读写操作外,还可以对java工具进行读写操作。

8.2.1工具流写出基本数据类型

8.2.2工具流读取基本数据类型

8.3操为难刁难象

8.3.1将工具序列化到文件

ObjectOutStream可以将一个内存中的java工具通过序列化的办法写入到磁盘的文件中,被序列化的工具必须要实现Serializable序列化接口,否则会抛出非常

8.3.1.1创建工具

将工具序列化到文件

8.3.2将工具反序列化到内存中

9、随机访问流

RandomAccessFile可以实现两个浸染

实现对一个 文件做读和写的操作

可以访问文件的任意位置,不像其他流只能按照先后顺序读取,默认方法为从头开始读。

三个主要的方法

布局方法—RandomAccessFile(String name,String mode)name用来确定文件,mode取r(读)或rw(读写),通过mode可以确定流对文件的访问权。

seek(long a)用来定位流工具读写文件的位置,a确定读写位置间隔文件开头的字节个数

getFilePointer()得到流当前的读写位置

随机访问流

10、File类在IO中的浸染

当以文件作为数据源或目标,除了可以利用字符串作为文件以及位置的指定外,我们也可以利用File类指定。

(与前面的字符字节输入流输出流无太大)

第三方IO包-ApacheIO包

下载与添加commoms-io包

1、下载地址

https://commons.apache.org/proper/commons-io/download_io.cgi

2、添加jar包到IDEA

3、FileUtils的利用

cleanDirectory:清空目录内容,但不删除目录

writerStringToFile:将字符串内容写到文件。

readFileToString的利用

copyDirectory的利用

4、IOUtils方法的利用

IOUtils方法大部分是重载的

write方法:向流里面写入内容

writerLine()方法:向流里面写入一行内容

toString案例

本章节总结

1、按流的方向分类

输入流:数据源到程序(InputStream、Reader读进来)输出流:程序到目的地(OutPutStream、Writer写出去)

2、按流的处理数据单元分类:

字节流:按照字节读取数据(InputStream、OutputStream)字符流:按照字符读取数据(Reader、Writer)

3、按流的功能

节点流:可以直接从数据源或目的地读写数据处理流:不直接连接到数据源或目的地,是处理流的流,通过对其他流的处理,提高程序的性能

4、IO的四个基本抽象类

InputStream,OutputStream,Reader,Writer

5、InputStream的实现类

FileInputStream:文件字节输入流ByteArrayInputStream:字节数组的字节输入流BufferedInputStream:字节缓冲输入流DataInputStream:数据字节输入流ObejectInputStream:工具字节输入流

6、OutputStream的实现类

FileOutputStream:文件字节输出流ByteArrayOutputStream:字节数组的字节输出流BufferedOutputStream:字节缓冲输出流DataOutputStream:数据字节输出流ObejectOutputStream:工具字节输出流printStream:字节输出流

7、Reader的实现类

FileReader:文件字符输入流BufferdReder:文件缓冲字符输入流InputStreamReader:字节转字符的输入流

8、Writer的实现类

FileWriterr:文件字符输出流BufferdWriter:文件缓冲字符输出流OutputStreamWriter:字节转字符的输出流

9、把Java工具转换为字节序列的过程称为工具的序列化

10、把字节序列规复Java工具的过程称为反序列化

标签:

相关文章

Java代码虚拟化保护技术与应用前景

软件应用的需求日益增长,软件开发过程中对代码的保护成为了一个重要议题。Java作为一种广泛应用于企业级应用的编程语言,其代码虚拟化...

PHP教程 2025-03-02 阅读1 评论0

CAD插件错误代码与应对步骤

CAD(计算机辅助设计)软件在工程设计领域得到了广泛应用。CAD插件作为提升设计效率的重要工具,在提高设计师工作效率的也带来了一定...

PHP教程 2025-03-02 阅读1 评论0

上古卷轴代码规则大全游戏背后的编程奥秘

《上古卷轴》作为一款深受玩家喜爱的角色扮演游戏,自问世以来便以其丰富的世界观、独特的游戏体验和深厚的文化底蕴吸引了无数玩家。在这款...

PHP教程 2025-03-02 阅读1 评论0