码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA 流与文件

时间:2017-08-19 18:32:55      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:color   中标   单个字符   summary   flush   red   read   long   ted   

InputStream和OutputStream是所有的输入流和输出流的超类。他们两个都是抽象类

read方法和write方法都是阻塞方法,这意味着如果不能里可以写入或者读取,比如因为网络问题,那么当前线程将会被阻塞。

InputStream的API:

方法摘要

int

available()
返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数。

void

close()
关闭此输入流并释放与该流关联的所有系统资源。

void

mark(int readlimit)
在此输入流中标记当前的位置。

boolean

markSupported()
测试此输入流是否支持 mark 和 reset 方法。

abstract int

read()
从输入流读取下一个数据字节。

int

read(byte[] b)
从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中。

int

read(byte[] b, int off, int len)
将输入流中最多 len 个数据字节读入字节数组。

void

reset()
将此流重新定位到对此输入流最后调用 mark 方法时的位置。

long

skip(long n)
跳过和放弃此输入流中的 n 个数据字节。

OutStream的API:

方法摘要

void

close()
关闭此输出流并释放与此流有关的所有系统资源。

void

flush()
刷新此输出流并强制写出所有缓冲的输出字节。

void

write(byte[] b)
将 b.length 个字节从指定的字节数组写入此输出流。

void

write(byte[] b, int off, int len)
将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流。

abstract void

write(int b)
将指定的字节写入此输出流。

Reader和Writer

用于读取和写入Unicode字符流的抽象类。和字节流的API类似。

看下面的API,何止是类似,兼职就是一样。因为不论是读取字节还是读取Unicode字符(这里其实是Unicode编码单元,2个字节),都是使用的int类型(4个字节)作为参数。

方法摘要

abstract void

close()
关闭该流。

void

mark(int readAheadLimit)
标记流中的当前位置。

boolean

markSupported()
判断此流是否支持 mark() 操作。

int

read()
读取单个字符。

int

read(char[] cbuf)
将字符读入数组。

abstract int

read(char[] cbuf, int off, int len)
将字符读入数组的某一部分。

int

read(CharBuffer target)
试图将字符读入指定的字符缓冲区。

boolean

ready()
判断是否准备读取此流。

void

reset()
重置该流。

long

skip(long n)
跳过字符。

组合流过滤器

如下使用:

DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("person.dat")));

DataInputStream/ DataOutStream

数据输入流允许应用程序以与机器无关方式从基础输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据

通过它的方法可以看出它的常用使用场景:

技术分享

BufferedInputStream/ BufferedOutStream

通过在内部维护一个缓冲区,每次执行read方法的时候,它底层其实是读取了固定大小数目的字节到内存的缓冲区中(通过构造参数可以配置每次读取字节的数目,也就是缓冲区的大小)中,然后下次读取的时候,直接从内存的缓冲区中拿,不同在通过原始的方式(如网络或者磁盘)。

write的时候,也是只写入到内部的缓冲区中,当缓冲区满了才会做真正的写入操作。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JAVA 流与文件

标签:color   中标   单个字符   summary   flush   red   read   long   ted   

原文地址:http://www.cnblogs.com/xiaolang8762400/p/7397112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!