java中的IO流

原创 2015年07月10日 23:26:27

在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。为了能够永久的保存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在其它程序中使用它们。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关键字修饰的变量为临时变量,不能被序列化;
当成员变量为引用类型时,引用的对象也被序列化。

版权声明:本文为博主原创文章,未经博主允许不得转载。

《JAVA_IO流学习总结》

  • 2017年11月27日 09:39
  • 857KB
  • 下载

java IO流详尽解析

流的概念和作用,好吧,百度了一张图片,不错 学习Java IO,不得不提到的就是JavaIO流。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,...

第4章 Java的IO流和异常处理.ppt

  • 2014年10月14日 21:12
  • 1.41MB
  • 下载

Java学习笔记之IO流

  • 2016年08月11日 07:36
  • 15KB
  • 下载

文件传输基础——Java IO流

1.文件编码 (1)直接新建文本,文本只认识ANSI编码格式。 (2)UTF-8:中文占3个字节、gdk:中文占2个字节、utf-16be(java是双字节编码):中文英文各占2个字节。...

java IO 流

  • 2012年07月16日 12:52
  • 268KB
  • 下载

java_io 流介绍

  • 2013年08月02日 00:04
  • 48KB
  • 下载

Java IO流使用详解

1.前言 在众多流行的编程语言中,Java对IO的处理应该是最特殊的,Java打着“尽量减少IO类的设计理念”,搞出了目前应该是最复杂的一套IO相关类,并称之为Java流。 对于新手来说,Ja...

java IO流的运用

  • 2013年04月12日 16:48
  • 2MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中的IO流
举报原因:
原因补充:

(最多只允许输入30个字)