博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java类Writer和类Reader小结
阅读量:6904 次
发布时间:2019-06-27

本文共 6518 字,大约阅读时间需要 21 分钟。

字段摘要
protected    
          用于同步针对此流的操作的对象。

 

构造方法摘要
protected () 
          创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected ( lock) 
          创建一个新的字符流 writer,其关键部分将同步给定的对象。

 

方法摘要
  (char c) 
          将指定字符添加到此 writer。
  ( csq) 
          将指定字符序列添加到此 writer。
  ( csq, int start, int end) 
          将指定字符序列的子序列添加到此 writer.Appendable。
abstract  void () 
          关闭此流,但要先刷新它。
abstract  void () 
          刷新该流的缓冲。
 void (char[] cbuf) 
          写入字符数组。
abstract  void (char[] cbuf, int off, int len) 
          写入字符数组的某一部分。
 void (int c) 
          写入单个字符。
 void ( str) 
          写入字符串。
 void ( str, int off, int len) 
          写入字符串的某一部分。

 

从类 java.lang. 继承的方法
, , , , , , , , , , 

 

字段详细信息

lock

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

构造方法详细信息

Writer

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

Writer

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

参数:
lock - 要同步的对象。
方法详细信息

write

public void write(int c)           throws
写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。

用于支持高效单字符输出的子类应重写此方法。

参数:
c - 指定要写入字符的 int。
抛出:
 - 如果发生 I/O 错误

write

public void write(char[] cbuf)           throws
写入字符数组。
参数:
cbuf - 要写入的字符数组
抛出:
 - 如果发生 I/O 错误

write

public abstract void write(char[] cbuf,                           int off,                           int len)                    throws
写入字符数组的某一部分。
参数:
cbuf - 字符数组
off - 开始写入字符处的偏移量
len - 要写入的字符数
抛出:
 - 如果发生 I/O 错误

write

public void write( str)           throws
写入字符串。
参数:
str - 要写入的字符串
抛出:
 - 如果发生 I/O 错误

write

public void write( str,                  int off,                  int len)           throws
写入字符串的某一部分。
参数:
str - 字符串
off - 相对初始写入字符的偏移量
len - 要写入的字符数
抛出:
 - 如果 off 或 len 为负,或者 off+len 为负或大于给定字符串的长度
 - 如果发生 I/O 错误

append

public  append( csq)              throws
将指定字符序列添加到此 writer。

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

out.write(csq.toString())

可能不添加整个序列,也可能添加,具体取决于字符序列 csq 的 toString 规范。例如,调用一个字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。

指定者:
接口 
 中的 
参数:
csq - 要添加的字符串序列。如果 csq 为 null,则向此 writer 添加四个字符 "null"。
返回:
此 writer
抛出:
 - 如果发生 I/O 错误
从以下版本开始:
1.5

append

public  append( csq,                     int start,                     int end)              throws
将指定字符序列的子序列添加到此 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()
 - 如果发生 I/O 错误
从以下版本开始:
1.5

append

public  append(char c)              throws
将指定字符添加到此 writer。

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

out.write(c)
指定者:
接口 
 中的 
参数:
c - 要添加的 16 位字符
返回:
此 writer
抛出:
 - 如果发生 I/O 错误
从以下版本开始:
1.5

flush

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

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

指定者:
接口 
 中的 
抛出:
 - 如果发生 I/O 错误

close

public abstract void close()                    throws
关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。
指定者:
接口 
 中的 
抛出:
 - 如果发生 I/O 错误

类Reader

字段摘要
protected    
          用于同步针对此流的操作的对象。

 

构造方法摘要
protected () 
          创建一个新的字符流 reader,其重要部分将同步其自身的 reader。
protected ( lock) 
          创建一个新的字符流 reader,其重要部分将同步给定的对象。

 

方法摘要
abstract  void () 
          关闭该流并释放与之关联的所有资源。
 void (int readAheadLimit) 
          标记流中的当前位置。
 boolean () 
          判断此流是否支持 mark() 操作。
 int () 
          读取单个字符。
 int (char[] cbuf) 
          将字符读入数组。
abstract  int (char[] cbuf, int off, int len) 
          将字符读入数组的某一部分。
 int ( target) 
          试图将字符读入指定的字符缓冲区。
 boolean () 
          判断是否准备读取此流。
 void () 
          重置该流。
 long (long n) 
          跳过字符。

 

从类 java.lang. 继承的方法
, , , , , , , , , , 

 

字段详细信息

lock

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

Reader

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

Reader

protected Reader( lock)
创建一个新的字符流 reader,其重要部分将同步给定的对象。
参数:
lock - 要同步的对象。
方法详细信息

read

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

read

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

用于支持高效的单字符输入的子类应重写此方法。

返回:
作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
抛出:
 - 如果发生 I/O 错误

read

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

read

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

skip

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

ready

public boolean ready()              throws
判断是否准备读取此流。
返回:
如果保证下一个 read() 不阻塞输入,则返回 True,否则返回 false。注意,返回 false 并不保证阻塞下一次读取。
抛出:
 - 如果发生 I/O 错误

markSupported

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

mark

public void mark(int readAheadLimit)          throws
标记流中的当前位置。对 reset() 的后续调用将尝试将该流重新定位到此点。并不是所有的字符输入流都支持 mark() 操作。
参数:
readAheadLimit - 在仍保留该标记的情况下,对可读取字符数量的限制。在读取这样多的字符后,尝试重置流可能会失败。
抛出:
 - 如果该流不支持 mark(),或者发生一些其他 I/O 错误

reset

public void reset()           throws
重置该流。如果已标记该流,则尝试在该标记处重新定位该流。如果已标记该流,则以适用于特定流的某种方式尝试重置该流,例如,通过将该流重新定位到其起始点。并不是所有的字符输入流都支持 reset() 操作,有些支持 reset() 而不支持 mark()。
抛出:
 - 如果尚未标记流,或者该标记已失效,或者该流不支持 reset(),或者发生一些其他 I/O 错误

close

public abstract void close()                    throws
关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。关闭以前关闭的流无效。
指定者:
接口 
 中的 
抛出:
 - 如果发生 I/O 错误

例:

[java]   
 
  1. //以下是实现复制功能  
  2. import java.io.*;  
  3. class io1   
  4. {  
  5.     public static void main(String[] args)   
  6.     {  
  7.         FileWriter fw = null;//在外面创建,避免里面直接新建后面无法读取fw,fr  
  8.         FileReader fr = null;  
  9.         try  
  10.         {  
  11.             fw = new FileWriter("h.txt");//创建一个h.txt文件  
  12.             fr = new FileReader("h.java");//读取h.java文件  
  13.         }  
  14.         catch (IOException e)  
  15.         {  
  16.             System.out.println(e.toString());  
  17.         }  
  18.           
  19.           
  20.         char [] buf = new char[1024];//定义数组  
  21.         int num = 0;  
  22.           
  23.             try  
  24.             {  
  25.                 while((num = fr.read(buf))!=-1)//当读取不等于-1时写入  
  26.                 {  
  27.                     fw.write(buf);  
  28.                 }  
  29.             }  
  30.             catch (IOException e)  
  31.             {  
  32.                 System.out.println(e.toString());  
  33.             }  
  34.               
  35.         try  
  36.         {  
  37.             if(fr!=null)//不为空则关闭  
  38.                 fr.close();  
  39.         }  
  40.         catch (IOException e)  
  41.         {  
  42.             System.out.println(e.toString());  
  43.         }  
  44.         try  
  45.         {  
  46.             if(fw!=null)  
  47.                 fw.close();  
  48.         }  
  49.         catch (IOException e)  
  50.         {  
  51.             System.out.println(e.toString());  
  52.         }  
  53.     }  
  54. }  

转载:http://blog.csdn.net/chaoyu168/article/details/49619499

你可能感兴趣的文章
码农也来关注下经济问题<美元加息>对我们的影响
查看>>
Linux用户及用户组管理
查看>>
Python随笔11
查看>>
ARTS打卡计划第三周-Review
查看>>
jQuery validation
查看>>
JavaScript知识架构学习路径(一)- 变量篇
查看>>
正则表达式
查看>>
20050425:公测啊,晚点再说
查看>>
Windows Azure媒体服务使得伦敦奥运会的云端传输成为可能
查看>>
错误:媒体集有 2 个媒体簇,但只提供了 1 个 sql2005 备份错误。
查看>>
(实用篇)PHP ftp上传文件操作类
查看>>
java常用类--与用户互动
查看>>
马化腾IT领袖峰会力推,微信小程序即将迎来爆发拐点
查看>>
javascript js 判断页面是否加载完成
查看>>
【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集
查看>>
架构思维案例:速学正则
查看>>
使用 IntraWeb (11) - 基本控件之 TIWButton
查看>>
Python数据结构——散列表
查看>>
责任链模式
查看>>
Android 仿携程活动列表边框布局
查看>>