1.Reader
1.1 继承关系
public abstract class Reader implements Readable, Closeable{}
//下面是两个接口所需要实现的类
public interface Readable {
public int read(java.nio.CharBuffer cb) throws IOException;
}
public interface Closeable {
public void close() throws IOException;
}
1.2 部分方法
//两个未实现的方法
abstract public void close() throws IOException;
abstract public int read(char cbuf[], int off, int len) throws IOException;
//一个对象锁,这个会在构造方法中进行赋值。
protected Object lock;
protected Reader() {
this.lock = this;
}
//这个锁会在skip方法中出现
synchronized (lock) {
//这里是读操作,读多少个字符。还有判断可能文件尾
}
1.3 锁的基本介绍
上面方法中用到的锁在使用时,使用不带锁的方法是不受影响的,只有两个方法同时带锁才会受影响.
下面是写的一个例子,了解锁起到的作用。
public static void main(String args[]) throws Exception {
final Object w = new Object();
Thread t = new Thread() {
public void run() {
try {
System.out.println("线程开始,先休息0.01s,这样可以保证主线程的锁先启动");
Thread.sleep(10);
System.out.println(w+"这里可以表明使用w对象的方法的");
System.out.println("等待主线程的同步块完成");
synchronized (w) {
System.out.println("进入线程同步块");
Thread.sleep(1000);
System.out.println("线程同步结束");
}
System.out.println("线程结束");
} catch (Exception e) {
e.printStackTrace();
}
}
};
t.start();
synchronized (w) {
System.out.println("主线程的同步开始");
Thread.sleep(1000);
System.out.println("主线程的同步结束");
}
}
//输出结果:
主线程的同步开始
线程开始,先休息0.01s,这样可以保证主线程的锁先启动
java.lang.Object@1fb8ee3这里可以表明使用w对象的方法的
等待主线程的同步块完成
主线程的同步结束
进入线程同步块
线程同步结束
线程结束
2.Writer
2.1 继承关系
public abstract class Writer implements Appendable, Closeable, Flushable {}
public interface Appendable {
Appendable append(CharSequence csq) throws IOException;
Appendable append(CharSequence csq, int start, int end) throws IOException;
Appendable append(char c) throws IOException;
}
//其他两个接口就不需要看了。
2.2 部分方法
首先是看一看append方法
//很明显是直接写入了。
public Writer append(CharSequence csq) throws IOException {
if (csq == null)
write("null");
else
write(csq.toString());
return this;
}
再看看几个抽象方法
abstract public void write(char cbuf[], int off, int len) throws IOException;
abstract public void flush() throws IOException;
abstract public void close() throws IOException;
2.3 与锁有关的
关于写操作的内容都会加锁。
3.结束
希望继续关注字符流的其他类
分享到:
相关推荐
2. **字符流**:字符流处理的是Unicode字符,主要由`Reader`和`Writer`类及其子类构成。` FileReader`和`FileWriter`是处理文件的字符流。字符流在处理文本文件时更为方便,因为它能自动处理字符编码。在源码中,...
标签中的"源码"可能指的是查看和理解这些流类的内部实现,这对于深入学习和调试问题非常有帮助。而"工具"可能指的是利用这些流类来构建实用的I/O工具,比如文件复制、格式转换等。 在处理运行时需要加的包,确保在...
字符流是基于Unicode编码的,它包括Reader和Writer两大类,分别用于读取和写入字符。Reader是所有字符输入流的基类,如 FileReader,它可以从文件读取字符;而Writer是所有字符输出流的基类,如 FileWriter,用于向...
字节流又分为输入流(InputStream)和输出流(OutputStream),字符流则有Reader和Writer。Java IO流还分为节点流和处理流,节点流直接连接到数据源或目的地,如FileInputStream和FileOutputStream;处理流则建立在...
- Reader和Writer是所有字符输入流和输出流的基类。例如FileReader和FileWriter用于读写文本文件。 - BufferedReader和BufferedWriter提供缓冲功能,提高读写效率。过滤字符流,如InputStreamReader和...
3. **字符流**:Reader和Writer是所有字符流的基类,例如 FileReader 和 FileWriter。字符流内部使用了编码解码机制,适合处理文本数据。BufferedReader和BufferedWriter用于提高读写效率,通过缓冲区批量处理数据。...
字符流处理的是Unicode字符,如Reader和Writer。除此之外,还有缓冲流(Buffered)、转换流(InputStreamReader/OutputStreamWriter)以及对象流(ObjectInputStream/ObjectOutputStream)等,它们各自有不同的功能...
Reader和Writer接口是字符流的父接口,具体实现如BufferedReader和BufferedWriter,它们提供了缓冲功能,提高了读写效率。 3. 转换流:InputStreamReader和OutputStreamWriter是字节流到字符流的桥梁,可以指定字符...
Java中,`Reader`和`Writer`是字符流的基类,它们分别对应于输入流和输出流。相比字节流,字符流在处理文本时更高效,因为它会自动处理字符编码问题。常见的字符流子类有`InputStreamReader`和`OutputStreamWriter`...
Java的I/O流库提供了一整套类和接口来处理这些数据流动,如InputStream、OutputStream、Reader、Writer等,它们支持读写文件、网络通信等各种功能。 1. **输入流(InputStream和Reader)**:用于从源头(如文件、...
2. **字符流**:Reader和Writer是处理字符流的基类,常用的子类有: - FileReader和FileWriter:专门用于文件的字符读写。 - BufferedReader和BufferedWriter:提供缓冲功能,提高读写效率。 - InputStreamReader...
基础流类包括InputStream/OutputStream(字节流)和Reader/Writer(字符流)。 2. **流的层次结构** Java IO流的类库形成了一个丰富的层次结构,如FileInputStream/FilteOutputStream是字节输入/输出流的子类,...
字符流处理的是字符数据,如`Reader`和`Writer`。`FileInputStream`和`FileOutputStream`是字节流的典型代表,用于读取和写入文件;而`FileReader`和`FileWriter`则是字符流,它们处理字符数据。 对于初学者来说,...
字节流处理单字节的数据,如InputStream和OutputStream,而字符流处理Unicode字符,如Reader和Writer。在Android中,我们通常使用字节流来读取和写入文件,因为它们可以处理二进制数据,比如图片、音频文件等;而...
类似地,`BufferedReader`和`BufferedWriter`是对字符输入流(Reader)和字符输出流(Writer)的缓冲版本。它们在内存中创建了一个字符缓冲区,对于处理文本文件,尤其是大文件时,可以显著提升性能。这两个类也...
项目中可能使用了不同类型的流,如字节流(InputStream和OutputStream)处理二进制数据,字符流(Reader和Writer)处理文本数据,以及文件流(FileInputStream和FileOutputStream)用于文件操作。此外,缓冲流...
- **字符流**:处理的是16位的Unicode字符数据,包括Reader和Writer两大类。BufferedReader和PrintWriter是常用的字符流实现。 3. **双向流与过滤流**: - **双向流**:如PipedReader和PipedWriter,允许数据在两...
熟悉InputStream和OutputStream的基本用法,以及Reader和Writer对于字符流的操作。 6. **多线程**: Java提供了内置的多线程支持,学习如何创建和管理线程,以及同步机制(如synchronized关键字、wait()、notify())...