java reader类子类_java类Writer和类Reader小结

字段摘要

protected  Object

构造方法摘要

protected

protected

方法摘要

将指定字符添加到此 writer。

CharSequence csq, int start, int end)

将指定字符序列的子序列添加到此 writer.Appendable。

abstract  void

abstract  void

void

写入字符数组。

abstract  void

写入字符数组的某一部分。

void

写入单个字符。

void

void

String str, int off, int len)

写入字符串的某一部分。

字段详细信息

lock

protected Object lock

用于同步针对此流的操作的对象。为了提高效率,字符流对象可以使用其自身以外的对象来保护关键部分。因此,子类应使用此字段中的对象,而不是 this 或者同步的方法。

构造方法详细信息

Writer

protected Writer()

创建一个新的字符流 writer,其关键部分将同步 writer 自身。

Writer

protected Writer(Object lock)

创建一个新的字符流 writer,其关键部分将同步给定的对象。

参数:lock - 要同步的对象。

方法详细信息

write

public void write(int c)

throws IOException

写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。

用于支持高效单字符输出的子类应重写此方法。参数:c - 指定要写入字符的 int。抛出:

write

public void write(char[] cbuf)

throws IOException

写入字符数组。参数:cbuf - 要写入的字符数组抛出:

write

public abstract void write(char[] cbuf,

int off,

int len)

throws IOException

写入字符数组的某一部分。参数:cbuf - 字符数组off - 开始写入字符处的偏移量len - 要写入的字符数抛出:

write

public void write(String str)

throws IOException

写入字符串。参数:str - 要写入的字符串抛出:

write

public void write(String str,

int off,

int len)

throws IOException

写入字符串的某一部分。参数:str - 字符串off - 相对初始写入字符的偏移量len - 要写入的字符数抛出:off 或 len 为负,或者 off+len 为负或大于给定字符串的长度

append

public Writer append(CharSequence csq)

throws IOException

将指定字符序列添加到此 writer。

以 out.append(csq) 的形式调用此方法,行为与以下调用完全相同:

out.write(csq.toString())

可能不添加整个序列,也可能添加,具体取决于字符序列 csq 的 toString 规范。例如,调用一个字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。参数:csq - 要添加的字符串序列。如果 csq 为 null,则向此 writer 添加四个字符

"null"。返回:此 writer抛出:从以下版本开始:1.5

append

public Writer append(CharSequence csq,

int start,

int end)

throws IOException

将指定字符序列的子序列添加到此 writer.Appendable。

当 csq 不为 null 时,以 out.append(csq, start, end) 的形式调用此方法,行为与以下调用完全相同:

out.write(csq.subSequence(start, end).toString())参数:csq - 要添加子序列的字符序列。如果 csq 为 null,则添加四个字符 "null",就好像

csq 包含这些字符一样。start - 子序列中第一个字符的索引end - 子序列中最后一个字符后面的字符的索引返回:此 writer抛出:start 或 end 为负,而 start 大于 end 或者 end 大于

csq.length()从以下版本开始:1.5

append

public Writer append(char c)

throws IOException

将指定字符添加到此 writer。

以 out.append(c) 的形式调用此方法,行为与以下调用完全相同:

out.write(c)参数:c - 要添加的 16 位字符返回:此 writer抛出:从以下版本开始:1.5

flush

public abstract void flush()

throws IOException

刷新该流的缓冲。如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。

如果此流的预期目标是由底层操作系统提供的一个抽象(如一个文件),则刷新该流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。抛出:

close

public abstract void close()

throws IOException

关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。抛出:

类Reader

字段摘要

protected  Object

构造方法摘要

protected

protected

方法摘要

abstract  void

void

标记流中的当前位置。

boolean

int

int

将字符读入数组。

abstract  int

将字符读入数组的某一部分。

int

boolean

void

long

跳过字符。

字段详细信息

lock

protected Object lock

用于同步针对此流的操作的对象。为了提高效率,字符流对象可以使用其自身以外的对象来保护重要部分。因此,子类应使用此字段中的对象,而不是 this 或者同步的方法。

构造方法详细信息

Reader

protected Reader()

创建一个新的字符流 reader,其重要部分将同步其自身的 reader。

Reader

protected Reader(Object lock)

创建一个新的字符流 reader,其重要部分将同步给定的对象。

参数:lock - 要同步的对象。

方法详细信息

read

public int read(CharBuffer target)

throws IOException

试图将字符读入指定的字符缓冲区。缓冲区可照原样用作字符的存储库:所做的唯一改变是 put 操作的结果。不对缓冲区执行翻转或重绕操作。参数:target - 要将字符读入的缓冲区返回:添加到缓冲区的字符数量,如果此字符源位于缓冲区末端,则返回 -1抛出:ReadOnlyBufferException - 如果目标是一个只读缓冲区从以下版本开始:1.5

read

public int read()

throws IOException

读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。

用于支持高效的单字符输入的子类应重写此方法。返回:作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1抛出:

read

public int read(char[] cbuf)

throws IOException

将字符读入数组。在某个输入可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。参数:cbuf - 目标缓冲区返回:读取的字符数,如果已到达流的末尾,则返回 -1抛出:

read

public abstract int read(char[] cbuf,

int off,

int len)

throws IOException

将字符读入数组的某一部分。在某个输入可用、发生 I/O 错误或者到达流的末尾前,此方法一直阻塞。参数:cbuf - 目标缓冲区off - 开始存储字符处的偏移量len - 要读取的最多字符数返回:读取的字符数,如果已到达流的末尾,则返回 -1抛出:

skip

public long skip(long n)

throws IOException

跳过字符。在某个字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。参数:n - 要跳过的字符数返回:实际跳过的字符数抛出:

ready

public boolean ready()

throws IOException

判断是否准备读取此流。返回:如果保证下一个 read() 不阻塞输入,则返回 True,否则返回 false。注意,返回 false 并不保证阻塞下一次读取。抛出:

markSupported

public boolean markSupported()

判断此流是否支持 mark() 操作。默认实现始终返回 false。子类应重写此方法。返回:当且仅当此流支持此 mark 操作时,返回 true。

mark

public void mark(int readAheadLimit)

throws IOException

标记流中的当前位置。对 reset() 的后续调用将尝试将该流重新定位到此点。并不是所有的字符输入流都支持 mark() 操作。参数:readAheadLimit - 在仍保留该标记的情况下,对可读取字符数量的限制。在读取这样多的字符后,尝试重置流可能会失败。抛出:

reset

public void reset()

throws IOException

重置该流。如果已标记该流,则尝试在该标记处重新定位该流。如果已标记该流,则以适用于特定流的某种方式尝试重置该流,例如,通过将该流重新定位到其起始点。并不是所有的字符输入流都支持 reset() 操作,有些支持 reset() 而不支持 mark()。抛出:

close

public abstract void close()

throws IOException

关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。关闭以前关闭的流无效。抛出:

例:

//以下是实现复制功能

import java.io.*;

class io1

{

public static void main(String[] args)

{

FileWriter fw = null;//在外面创建,避免里面直接新建后面无法读取fw,fr

FileReader fr = null;

try

{

fw = new FileWriter("h.txt");//创建一个h.txt文件

fr = new FileReader("h.java");//读取h.java文件

}

catch (IOException e)

{

System.out.println(e.toString());

}

char [] buf = new char[1024];//定义数组

int num = 0;

try

{

while((num = fr.read(buf))!=-1)//当读取不等于-1时写入

{

fw.write(buf);

}

}

catch (IOException e)

{

System.out.println(e.toString());

}

try

{

if(fr!=null)//不为空则关闭

fr.close();

}

catch (IOException e)

{

System.out.println(e.toString());

}

try

{

if(fw!=null)

fw.close();

}

catch (IOException e)

{

System.out.println(e.toString());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值