java中的IO流

 

在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。为了能够永久的保存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在其它程序中使用它们。Java的I/O技术可以将数据保存到文本文件、二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求。

1、IO流用来处理设备之间的数据传输。

2、Java对数据的操作是通过流的方式。

3、Java用于操作流的对象都封装在IO包中。

4、流按操作数据分为两种:字节流与字符流。

5、流按流向分为:输入流,输出流。

        IO

                        字符流的抽象基类: Reader,Writer

字节流的抽象基类 : InputStream,OutputStream

IO流体系

Reader类的层次结构:

Writer类的层次结构:


 InputStream类的层次结构:

OutputStream类的层次结构:


字符流的缓冲区

1、缓冲区的出现提高了对数据的读写效率。

2、对应类。

(1) BufferedWriter

(2) BufferedReader

3、缓冲区要结合流才可以使用。

4、在流的基础上对流的功能进行了增强。


File 类:

•java.io包中的File类提供了与具体平台无关的方式来描述目录和文件对象的属性功能。其中包含大量的方法可用来获取路径、目录和文件的相关信息,并对它们进行创建、删除、改名等管理工作。因为不同的系统平台,对文件路径的描述不尽相同。为做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。

• File类的直接父类是Object类。

• 下面的构造方法可以用来生成File 对象:

File(String directoryPath)

File(String directoryPath, String filename)

File(File dirObj, String filename)

这里,directoryPath是文件的路径名,filename是文件名,dirObj 是一个指定目录的File 对象

这些构造方法取决于访问文件的方式。例如,若在应用程序里只用一个文件,第一种创建文件的结构是最容易的。但若在同一目录里打开数个文件,则后种方法更好一些。


2.OutputStream:继承自OutputStream的流是用于程序中输入数据,且数据的单位为字节:

OutputStream的基本方法:

Void write (int b)//向输入流中写入一个字节数据,该字节数据为参数b的低8位

Void write(byte[] b)//将一个字节类型的数组中的数据写入输出流

Void write(byte[] b,int off,intlen)//将一个字节类型的数组中的从指定位置(off)开始的len个字节写入到输出流

void close()//关闭流释放内存资源

Void flush()//将输出流中缓存的数据全部写到目的地


3.Reader:继承自Reader流的都是用于向程序中输入数据,且数据单位为字符。
Reader的基本方法:
int  read()//读取一个字符并以整数的形式返回(0~255),如果返回-1表示已到输入流的末尾。
int  read(byte[] buffer)//读取一系列字符并存储到一个数组buffer,返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
int  read(byte[] buffer,int offer,int length)//读取length个字符,并存储到一个字节数组buffer,从length位置开始,返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
void close()//关闭流释放内存资源

long skip (long n)//跳过n个字符不读,返回实际的字符数


4.Writer:继承自Writer的流都是用于程序中输入数据,且数据单的单位为字符
Writer的基本方法
Void write (int c)//向输入流中写入一个字符数据,该字符数据为参数c的低16位
Void write(char[] c)//将一个字符类型的数组中的数据写入输出流
Void write(char[] b,int off,int len)//将一个字符类型的数组中的从指定位置(off)开始的len个字符写入到输出流
void writer(String string)//将一个字符串的字符写入到输入流
void writer(String string,int offset,int length) //将一个字符串从offset开始的length个字符写入到输出流
void close()//关闭流释放内存资源
void flush()//将输出流中缓存的数据全部写到目的地


5.缓冲流:减少磁盘的读写次数
BufferInputStream、BufferOutputStream、BufferReader、BufferWriter
其构造方法为:
BufferInputStream(InputStream in)
BufferInputStream(InputStream in,int size)//sz为自定义缓存区的大小
BufferOutputStream(OutputStream out)
BufferOutputStream(OutputStream out,int size)
BufferReader(Reader in )
BufferReader(Reader in,int size)
BufferWriter(Writer out)
BufferWriter(Writer out,int size)

注意:
BufferReader提供readLine方法用于读取一行字符串(以\r或\n分隔)
BufferWriter提供newLine用于写入一个行分隔符
对于输出的缓冲流,写出的数据会现在内存中缓存,使用flush方法将会使内存中的数据立刻出来


6.Object流:ObjectInputStream 和ObjectOutputStream需要实现serializable接口实现序列化
序列化:序列化只能保存对象的非ststic成员,不能保存任何成员方法和static成员变量,而且序列化保存的只是变量的值;
用transient关键字修饰的变量为临时变量,不能被序列化;
当成员变量为引用类型时,引用的对象也被序列化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值