【第22期】观点:IT 行业加班,到底有没有价值?

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)之常用流

ByteArrayInputStream、ByteArrayOutputStream ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 re...

黑马程序员—Java基础学习笔记之IO流

-----------<span style="fo

java IO流面试总结

java IO流面试总结

黑马程序员——Java基础之IO流(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  一、<

第二十篇:JAVA输入输出(IO)之字节流

字节输入流 java.io.InputStream类是表示字节输入流的所有类的超类,字节输入流都直接或间接的继承了该类,通常情况下我们会使用该类的子孙类操作字节输入流,实现对字节输入流的读取。  在...

黑马程序员 java_IO流

                                          ------- android培训<

Java基础(14):IO流—理解I/0概念和掌握相关类的作用(附有操作代码)

在Java中如果要进行输出和输入操作,就需要使用到IO流,例如第一次写的语句System.out.println("hello,world")就是一个典型的输出分流。IO流是Java的重点知识,除了要...

java使用IO流进行文件的合并

package chapter8.file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;

java IO流

一、什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件、内存、IO设备等数据的流向...

详细讲解JAVA中的IO流(转)

详细讲解JAVA中的IO流 原帖:http://www.cnblogs.com/pepcod/archive/2013/01/20/2913435.html 一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。 流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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