一、IO(Input Output)流
- IO流用来处理设备之间的数据传输
- Java对数据的操作是通过流的方式
- Java用于操作流的对象都在IO包中
- 流按操作数据分为两种:字节流和字符流
- 流按流向分为:输入流和输出流
二、IO流常用基类
- 字节流的抽象基类:InputStream OutputStream
- 字符流的抽象基类:Reader Writer
- 注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
- 如:InputStream 的子类FileInputStream Reader的子类FileReader
- 流的重要操作是读和写
- 读和写都会发生IOException
三、Writer字符输出流
- 写入字符流的抽象类。
- 子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。
- 但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
- 直接已知子类:
- BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
public abstract class Writer implements Appendable, Closeable, Flushable { /** *刷新该流的缓冲。 *如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。 *然后,如果该目标是另一个字符或字节流,则将其刷新。 *因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。 */ public abstract void flush() throws IOException; /** *关闭此流,但要先刷新它。 *在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。 *关闭以前关闭的流无效。 */ public abstract void close() throws IOException; //写入字符数组的某一部分。 public abstract void write(char[] cbuf, int off, int len) throws IOException; //写入字符数组。 public void write(char[] cbuf) throws IOException{} //写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略 public void write(int c) throws IOException{} //写入字符串。 public void write(String str) throws IOException{} //写入字符串的某一部分。 public void write(String str, int off, int len) throws IOException{} }
四、OutputStreamWriter
- OutputStreamWriter 是字符流通向字节流的桥梁:
- 可使用指定的 charset 将要写入流中的字符编码成字节。
- 它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
- 每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。
- 在写入底层输出流之前,得到的这些字节将在缓冲区中累积。
- 可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。
- 注意,传递给 write() 方法的字符没有缓冲。
- 为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器
public class OutputStreamWriter extends Writer { //创建使用默认字符编码的 OutputStreamWriter public OutputStreamWriter(OutputStream out){} //创建使用指定字符集的 OutputStreamWriter。 public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException{} //返回此流使用的字符编码的名称。 public String getEncoding(){} //其余方法继承自Writer和Object }
五、FileWriter
- 用来写入字符文件的便捷类。
- 此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。
- 要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。
- 文件是否可用或是否可以被创建取决于底层平台。
- 特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。
- 在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
- FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
public class FileWriter extends OutputStreamWriter { /** *根据给定的 File 对象构造一个 FileWriter 对象。 *IOException - 如果该文件存在,但它是一个目录,而不是一个常规文件; *或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它 */ public FileWriter(File file) throws IOException{} //根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 public FileWriter(File file, boolean append) throws IOException{} //根据给定的文件名构造一个 FileWriter 对象。 public FileWriter(String fileName) throws IOException{} //根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象 public FileWriter(String fileName, boolean append) throws IOException{} //其余方法全部继承自OutputStreamWriter }
相关推荐
20. **java.io.Reader**和**java.io.Writer**:所有字符流的基类,用于处理字符数据。 21. **java.io.DataInputStream**和**java.io.DataOutputStream**:用于读写基本数据类型的流。 22. **java.io....
- 按流向与处理单位组合:字节输入流(如FileInputStream)、字节输出流(如FileOutputStream)、字符输入流(如BufferedReader)、字符输出流(如PrintWriter)。 - 按功能:节点流(直接操作数据源或目的地,如...
在给定的“Java IO(输入输出)案例练习”中,包含两个小练习,分别涉及字节流和字符流的使用。 首先,我们来看第一个练习,"task01"。这个例子中,开发者可能利用Java的字节流(Byte Stream)来模拟保存每日交易...
计算机等级考试二级Java模拟题涉及了Java编程语言的基础知识,包括I/O流、对象序列化、文件操作等重要概念。以下是对题目中涉及知识点的详细解释: 1. `ObjectInputStream` 的父类是 `InputStream`。`...
3. Java 中的输入/输出流:Java 中的输入/输出流可以用来读取和写入数据,常用的输入/输出流类包括 java.io.InputStream、java.io.OutputStream、java.io.Reader、java.io.Writer 等。 4. Java 语言特点:Java 语言...
8. **输入/输出流**:Java的I/O流系统允许程序读取和写入数据。了解InputStream和OutputStream家族,以及Reader和Writer家族,对文件操作和网络通信至关重要。 9. **集合框架**:Java集合框架提供了多种数据结构,...
- Java IO流的分类,包括字节流(如InputStream和OutputStream)和字符流(如Reader和Writer)。 - Java中IO流的使用,例如文件的读写操作,以及常用类如File、BufferedReader等的应用。 4. Java网络编程 - Java...
7. **I/O 流**:Java 的IO库支持处理输入输出,包括File、InputStream、OutputStream、Reader、Writer等,支持字符流和字节流,以及缓冲流、转换流和对象序列化。 8. **关键字**:如`this`指向当前对象的引用,`...
2. **输入/输出流**:使用`java.io`包中的InputStream和OutputStream进行文件读写。例如,`FileInputStream`和`FileOutputStream`分别用于读写文件。`read()`和`write()`方法用于读写字节数据,`BufferedInputStream...
- **Java序列化**:是一种将Java对象转换成流的过程,以便于传输或持久化存储。 - **实现序列化**:实现`java.io.Serializable`接口。示例: ```java import java.io.*; public class Employee implements ...
1. Java 输入/输出流:Java 提供了多种输入/输出流类,如 FileInputStream 和 FileOutputStream 分别用于读取和写入字节流,Reader 和 Writer 用于读写字符流,RandomAccessFile 可同时进行读写操作。File 类则用于...
import java.io.Serializable; public class Employee implements Serializable { private static final long serialVersionUID = 1L; private String name; // 省略getter和setter } ``` #### 7. 一个".java...
6. **输入/输出流**:学习文件操作,包括文件的读写,以及IO流的基本概念,如字节流和字符流,掌握File类、InputStream/OutputStream、Reader/Writer等基本流的使用。 7. **多线程**:理解线程的创建(Thread类和...
10. Java IO流:Java的IO流分为字节流(InputStream和OutputStream)和字符流(Reader和Writer),它们分别用于处理二进制数据和文本数据。IO流还分为节点流和处理流,节点流直接与底层数据源或数据目的地相连,处理...
8. **输入输出流**:Java的IO流系统用于读写文件和网络通信。学习InputStream、OutputStream、Reader、Writer四大抽象类及其子类,以及BufferedReader、BufferedWriter等缓冲流。 9. **集合框架**:ArrayList、...
30. **IO流的分类**:InputStream、OutputStream处理输入输出,Reader、Writer处理字符输入输出。 31. **文件流**:FileInputStream、FileOutputStream、FileReader、FileWriter分别用于文件的读写操作。 32. **...
### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...
学习InputStream和OutputStream,以及Reader和Writer,理解字节流和字符流的区别。 10. **多线程**:Java内置对多线程的支持,理解Thread类和Runnable接口,以及同步机制(如synchronized关键字、wait()、notify()...
10. **输入/输出流**:熟悉File类,以及使用FileReader/Writer、BufferedReader/Writer进行文件读写。了解InputStream和OutputStream家族,以及Reader和Writer家族。 11. **接口与抽象类**:理解接口与抽象类的区别...
Java中的IO流主要分为两大类:字节流(InputStream和OutputStream)和字符流(Reader和Writer),它们都支持字节的读写和字符的读写。 14. **BIO、NIO和AIO的区别** BIO(Blocking I/O)是阻塞式IO,数据读写时...