java DataOutputStream 乱码 java datainputstream的好处_c++

IO常用流的功能及特性:

输入流inputStream:只能从中读取字节数据,而不能向其写出数据

输出流OutputStream:只能向其写入字节数据,而不能从中读取数据

输入流inputStream:

1. dataOutputStream创建一个新的数据输出流,将数据写入指定基础输出流。

2. printStream是一个字节打印流

3. bufferedOutputStream:实现缓冲。

4. FileOutputStream是用于将数据写入 File 或 FileDescriptor 的输出流,是用于写入诸如图像数据之类的原始字节的流。

5. ObjectOutputStream;用于读取(重构)对象。

6. pipedOutputStream创建尚未连接到管道输入流的管道输出流。

7. byteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。

输出流OutputStream:

1. pushBackInputStream为另一个输入流添加性能,

2. BufferedInputStream为另一个输入流添加一些功能

3. lineNumberInputStream是一个输入流过滤器,它提供跟踪当前行号的附加功能

4. FileInputStream负责从文件或另一些更特殊的地方读入字节数据。

5. ObjectInputStream对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。

7.  SequenceInputStream表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

8. StringBufferInputStream创建一个字符串输入流

9. ByteArrayInputStream创建一个涵内部缓冲区的流

Reader:用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。

1.FileReader用于处理文件的字符读取流对象。

2.LineNumberReader使用默认输入缓冲区的大小创建新的行编号

3.pushBackReader允许将字符推回到流的字符流 reader

4.PipedReader创建传送的字符输入流。

5.CharArrayReader实现一个可用作字符输入流的字符缓冲区

6.StringReader是一个字符串的字符流

7.InputStreamReader字节到字符的桥梁,可从底层输入流读取一个或多个字节

8.BufferedReader创建一个缓冲字符输入流

9.FilterReader用于读取已过滤的字符流的抽象类,提供一些将所有请求传递给所包含的流的默认方法

Writer写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。

1. FileWriter处理文件的字符写入流对象。

2. BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

3. CharArrayWriter实现一个可用作 Writer 的字符缓冲区

4. StringWriter一个可以用它回收在字符串缓冲区中的输出来构造字符串的字符流。 关闭 StringWriter 无效。此类中的方法在关闭该流后仍可被调用,而不会产生任何 IOException。

5. OutputStreamWriter字符到字节的桥梁。

6. PrintWriter负责将字节“组装”成更有用的数据类型。

7. PipedWriter传送的字符输出流。创建一个尚未连接到传送 reader 的传送 writer。

8. FilterWriter用于写入已过滤的字符流的抽象类。

序列流,也称为合并流——SequenceInputStream:

特点:可以将多个读取流合并成一个流。这样操作起来很方便。

原理:其实就是将每一个读取流对象存储到一个集合中。最后一个流对象结尾作为这个流的结尾。

作用:可以用于多个数据的合并。