IO流:字节流、字符流、流的总结、DataInputStream、序列化和反序列化

本文详细介绍了Java的IO技术,包括IO流的分类、File类的使用、字节流和字符流的读写模板、以及DataInputStream、序列化和反序列化。重点讲解了InputStream、OutputStream、Reader、Writer的使用方法,以及BufferedReader和BufferedWriter提高读写效率的技巧。此外,还提到了DataInputStream在处理二进制文件时的作用,以及对象序列化和反序列化的概念和用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:IO介绍

编写程序,数据最终都内存中,变量,int a = 10; 数组、字符串、集合,这些容器都可以存放数据,但是它们把数据都存放在内存中,一旦程序停止运行,JVM退出。那么给JVM分配的内存空间就消失了,在整个程序中的数据就没有了。

内存属于临时存储设备,断电、程序运行结束,内存释放,数据就消失。

持久化存储设备:数据可以这类设备上长久的保存。硬盘、U盘、光盘、磁带、软盘、云盘等。这些设备都可以长久的保存数据,当需要数据的时候,可以到这些设备上获取数据。

IO技术:把程序中的数据最终输出到持久设备上。或者从持久设备读取已经存在的数据,最后给我们读取到程序中。

IO:input 输入    读操作

       output输出    写操作

2:file类介绍

需要把数据持久的保存起来,最终都要以文件的形式存储在持久设备上。如果持久设备上文件太多如何管理?就会使用文件夹来管理文件或者文件夹。

在学习IO技术之前,需要了解Java是如何针对文件和文件夹这类事物做封装的。

在Java中使用File 这个类来描述持久设备上的文件或者文件夹。

文件:是用来保存真实的数据的。

文件夹:管理文件和文件夹。

File类常用的构造方法有2个,构造方法可以把对应的文件或者文件夹来封装成一个File对象。File没有空参数的构造方法。

常用的构造方法:

1、File(String pathname)

   把一个字符串描述的文件或者文件夹封装成File对象。 File类的构造方法会把指定的内容封装成File对象,  

   2、File(String parent, String child)

    可以把一个文件或者文件夹的父目录单独分离出来,然后在结合当前的子目录一起封装成File对象

3:file常用方法

 

4:字节流

 File类是描述文件和文件夹的,并且其中定义的方法都是围绕文件和文件夹的操作展开的。

 但是File类有缺陷,它无法去获取一个文件中的数据。

 如果我们在程序中要读取文件中存放的具体的数据,或者给文件中写数据,这时必须使用Java中提供的另外一套机制来读取,

 这套机制就是IO流技术。I: InputStream ; O:OutputStream

流的分类:

 

使用流的目的是把程序中的数据写持久设备上,或者从持久设备上读取数据,在写或者读之前,先要让这个流和持久设备之间建立

   一个读或者写的通道,只有有了这个通道之后才能在这个通道中开始读写数据。

FileInputStream

FileOutputStream

AbcInputStream

AbcOutputStream

1:InputStream

fileInputStream是inputStream常用子类。

fileInputStream流被称为文件字节输入流,意思指对文件数据以字节的形式进行读取操作如读取图片视频等.

常用的构造方法有:FileInputStream(File file);FileInputStream( String path )

常用的方法有:

int read( ): 这个方法被调用一次,它运行一次,会从底层读取一个字节数据,当把这个字节读取完成之后,在文件中的隐式光标自动的移动到第一个字节和第二个字节之间。返回的数据是这个字节数据转成int值,当读取到文件的末位时,会返回-1.因此在使用read方法读取数据的时候,通过判断读取的数据是否是-1来判断是否把文件中的数据已经全部读取完成。

int read(byte[] b):这个方法每执行一次,就会从底层读取多个字节数据,把读取到的字节数据存储在byte数组中。返回的int值,是表示当前到底从底层读取了几个字节数据。 即就是给byte数组中存储了几个字节数据。如果读取到文件末位会返回-1。

int read(byte[] b,int off,int len):off从哪里开始,读多少

void close( ):关闭流,在使用完成之后一定要关闭流

2:字节读取文件模板

   1、一次读取一个字节的模版代码

      1、先创建流对象和文件进行关联

   FileInputStream  fis = new FileInputStream("文件");

  

      2、定义变量,用来记录从底层文件中读取到的那个字节数据

   int ch = 0;

      

      3、定义循环开始从文件中读取数据

       while( ( ch = fis.read() )!=-1 ){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值