`
wdhdmx
  • 浏览: 300406 次
  • 性别: Icon_minigender_1
  • 来自: 山西
博客专栏
D4bbb5f7-9aa4-3e66-8194-f61b3f0241c2
天天编程
浏览量:21525
社区版块
存档分类
最新评论

字符流(一)Reader和Writer源码理解

阅读更多

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.结束

希望继续关注字符流的其他类

1
0
分享到:
评论
1 楼 Peteryang杨 2011-11-30  
希望楼主加上使用环境,在什么具体实际环境,使用性能,效率怎么样。继续关注。。

相关推荐

    Java字符流与字节流区别

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元...字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。

    字节流字符流的使用方法源码+文档

    本压缩包包含在Myeclipse下运行的源码,以及word文档。内容涉及IO流的简单使用,实现两个文件的复制,以及多文件复制。

    ioliu.rar_IO流 java_Java Reader Writer_java IO_stream

    * io流 运用 * 注意:只要子类 包含以下类名字的,就是该流的继承 * InputStream----- ... * Reader-------- 输入字符流 * OutputStream-----输出字节流 * Writer --------输出字符流

    Java中的IO流(二)字符流的常用操作

    今天带来的是JAVA的IO流中的字符流,Reader和Writer子类流的用法。 基础概念 流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作...

    Python 图片转字符画之将生成字符画保存到文件 Python源码

    Python 图片转字符画之将生成字符画保存到文件 Python源码Python 图片转字符画之将生成字符画保存到文件 Python源码Python 图片转字符画之将生成字符画保存到文件 Python源码Python 图片转字符画之将生成字符画保存...

    c#版字符串DES加密解密工具源码

    源码 c#版字符串DES加密解密工具源码

    python源码开发的DIY字符画程序.zip

    python源码开发的DIY字符画程序.zip python源码开发的DIY字符画程序.zip python源码开发的DIY字符画程序.zip python源码开发的DIY字符画程序.zip python源码开发的DIY字符画程序.zip python源码开发的DIY字符画程序....

    字节流字符流练习

    字节流与字符流的练习文档,内附一个简要的记事本综合文档。

    IO基础(字符流)

    文章目录IO基础(字符流)一、字符流二、常用的字符流类的继承关系三、字符流 FileReader 和 FileWriter四、字符缓冲流 BufferedReader 和 BufferedWriter五、 字符字节转换流(InputStreamReader/...

    基于Python的DIY字符画设计与实现(源码+可执行文件).zip

    基于Python的DIY字符画设计与实现(源码+可执行文件).zip基于Python的DIY字符画设计与实现(源码+可执行文件).zip基于Python的DIY字符画设计与实现(源码+可执行文件).zip基于Python的DIY字符画设计与实现(源码+...

    字符串加密与解密C#源码

    字符串加密与解密C#源码,供初学者参考。代码简洁,直观。

    易语言源码易语言非法字符检测源码.rar

    易语言源码易语言非法字符检测源码.rar 易语言源码易语言非法字符检测源码.rar 易语言源码易语言非法字符检测源码.rar 易语言源码易语言非法字符检测源码.rar 易语言源码易语言非法字符检测源码.rar 易语言源码...

    字节流和字符流

    在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类)java中提供了专用于输入输出功能的包Java.io,...

    Python 清洗字符串和列表 Python源码

    Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python...

    基于数字图像处理和深度学习的车牌定位,字符分割和字符识别项目源码+数据集+说明资料+论文.zip

    基于数字图像处理和深度学习的车牌定位,字符分割和字符识别项目源码+数据集+说明资料+论文.zip主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。也可作为课程设计、期末大作业。包含全部项目...

    命令行生成任意ASCII字符流

    #这辈子最讨厌的就是要分的资源# 源码 http://download.csdn.net/detail/mao_liz/6789341 用法: ascii $xx[$xx[$xx[...]]]] xx=需要的字符的16进制数 只进行了基本的Debug,用法没错的话是不会出错的

    字符串生成二维码源码

    字符串生成二维码源码,c语言,参考qrencode编写,该源码基于mini2440,linux环境下调试,可方便移植到任何平台。

    .net 图片转字符画,可选择数字字符画,中文等模式 源码

    .net 图片转字符画,可选择数字字符画,中文等模式 源码 .net 图片转字符画,可选择数字字符画,中文等模式 源码 .net 图片转字符画,可选择数字字符画,中文等模式 源码 .net 图片转字符画,可选择数字字符画,中文...

    易语言源码易语言文本转字符画源码.rar

    易语言源码易语言文本转字符画源码.rar 易语言源码易语言文本转字符画源码.rar 易语言源码易语言文本转字符画源码.rar 易语言源码易语言文本转字符画源码.rar 易语言源码易语言文本转字符画源码.rar 易语言源码...

    Python 拼接字符串、列表和字典 Python源码

    Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码...

Global site tag (gtag.js) - Google Analytics