您的当前位置:首页正文

java常用流

2022-07-22 来源:意榕旅游网


一、什么是流? 流:输入和输出

如何从能够发送字节序列的任何数据源取得输入 如何将输出发送到能够节收字节序列的任何目的地 二、流的分类:

1) 按数据流的方向不同可以分为输入流和输出流

输入流:指一个可以读取自己序列的对象 输出流:指一个可以写入字节序列的对象

2) 按处理数据单位不同可以分为字符流和字节流

字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer 抽象类 Reader 、 Writer 的读入和写出操作都是基于两字节的 Unicode 码元的。 read 和 write 方法在执行时都将阻塞,直至字节确实被读入或写出。 3) 按功能不同可以分为节点流和处理流

节点流可以从一个特定数据源(节点)读取数据

处理流是连接在已存在流之上,通过对数据的处理为程序提供更为强大的读写功能

三、 四类常用流的结构

1) InputStream:

a) FileInputStream;//文件相关类 b) PipedInputStream ;//管道相关类 c) FilterInputStream;//过滤流:

i. LineNumberInputStream ii. DataInputStream iii. BufferedInputStream iv. PushbackInputStream

d) ByteArrayInputStream//内存流 e) SequenceInputStream//序列相关流 f) StringBufferInputStream//字符相关流 g) ObjectInputStream //对象相关流

2) OutputStream:

a) FileOutputStream;//文件相关类 b) PipedOutputStream ;//管道相关类 c) FilterOutputStream;//过滤流:

i. DataOutputStream ii. BufferedOutputStream iii. PrintStream

d) ByteArrayOutputStream//内存流 e) ObjectOutputStream //对象相关流

3) Reader:

a) BufferedReader

i. LineNumberReader

b) CharArrayReader c) FilterReader

i. PushbackReader

d) InputStreamReader

i. FileReader

e) PipedReader f) StringReader

4) Writer:

a) BufferedWriter

b) CharArrayWriter c) OutputStreamWriter

i. FileWriter

d) FilterWriter e) PipedWriter f) StringWriter g) PrintWriter

四、节点流的相关类型

节点流(最低级的那个流)程序用于直接操作目标设备所对应的类叫节点流类 1) 文件相关

按字节:FileInputStream、FileOutputStream 按字符:FileReader 、FileWriter

2) 内存相关

按字节: ByteArrayInputStream、ByteArrayOutputStream 按字符: CharArrayReader 、CharArrayWriter 按字符串:StringReader 、StringWriter

3) 管道相关

按字节: PipedInputStream、PipedOutputStream 按字符: PipedReader 、Pipe的Writer

五、包装流(处理流、过滤流) 是对一个已存在的流的连接和封装,通过所封装的流的

功能调用实现数据读写

1) 缓冲相关(可以大幅提升性能)

按字节: BufferedInputStream、BufferedOutputStream 按字符: BufferedReader 、BufferedWriter

2) 过滤处理

按字节: FilterInputStream、FilterOutputStream 按字符: FilterReader 、FilterWriter

3) 字节转化成字符

输入: InputStreamReader 输出: OutputStreamWriter

4) 对象序列化处理(要求放在流中的对象一定是实现Serializable接口) 输入: ObjectInputStream 输出: ObjectOutputStream

5) 数据转化处理(可以读写4类8中类型(包含String)的数据) 输入: DataInputStream 输出: DataOutputStream

6) 计数处理(不使用了)

按单位: LineNumberInputStream、LineNumberReader

7) 提取预处理(先试穿后买)

按单位: PushbackInputStream、PushbackReader 思路:

先试穿:int b = pis.read(); 再退回:pis.unread();

打算买就不用调用unread方法

8) 打印处理(输出流、支持多种数据格式(基本类型和String)输出) 按单位: PrintStream、PrintWriter

六、 如何从屏幕上获取一行? 1).BufferedReader缓冲输入流(String readLine()):

BufferedReader br = new BufferedReader(new FileReader(f));

String s = null; while ((s = br.readLine()) != null) {

2).通过Scanner类扫描一行:

Scanner in = new Scanner(System.in);

if (in.hasNextLine()) { //通过hasNextLine方法检验是否存在一行,并返回一个boolean值 String s = in.nextLine();

//………

}

七、为什么要有缓冲流

缓冲流:“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写

的效率。

//通过readLine()方法读取一个文本行,返回boolean类型值

fs.println(s); } br.close();

因篇幅问题不能全部显示,请点此查看更多更全内容