首页 > 代码库 > IO Writer和Reader
IO Writer和Reader
Writer
写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
字段
protected Object lock 用于同步针对此流的操作的对象。
构造函数
protected Writer() 创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected Writer(Object lock) 创建一个新的字符流 writer,其关键部分将同步给定的对象
方法
Writer append(char c) 将指定字符追加到此 writer。
Writer append(CharSequence csq) 将指定字符序列追加到此 writer。
Writer append(CharSequence csq, int start, int end) 将指定字符序列的子序列追加到此 writer.Appendable。
abstract void close() 关闭此流,但要先刷新它。
abstract void flush() 刷新此流。
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
void write(int c) 写入单个字符。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分。
FileWriter
其父类是OutputStreamWriter,父类实现Writer抽象类,FileWriter用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。 FileWriter 换行符是 \r\n
构造方法
FileWriter(File file) 在给出 File 对象的情况下构造一个 FileWriter 对象。
FileWriter(File file, boolean append) 在给出 File 对象的情况下构造一个 FileWriter 对象。
FileWriter(FileDescriptor fd) 构造与某个文件描述符相关联的 FileWriter 对象。
FileWriter(String fileName) 在给出文件名的情况下构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append) 在给出文件名的情况下构造 FileWriter 对象,它具有指示是否挂起写入数据的 boolean 值。
特有方法
Writer和OutputStreamWriter中方法的综合
Reader
用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
字段
protected Object lock 用于同步针对此流的操作的对象。
构造函数
protected Reader() 创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected Reader(Object lock) 创建一个新的字符流 writer,其关键部分将同步给定的对象
方法
abstract void close() 关闭该流。
void mark(int readAheadLimit) 标记流中的当前位置。
boolean markSupported() 判断此流是否支持 mark() 操作。
int read() 读取单个字符。
int read(char[] cbuf) 将字符读入数组。
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。
int read(CharBuffer target) 试图将字符读入指定的字符缓冲区。
boolean ready() 判断是否准备读取此流。
void reset() 重置该流。
long skip(long n) 跳过字符。
FileReader
其父类InputStreamReader实现Reader,FileReader用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
构造方法
FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader。
FileReader(FileDescriptor fd) 在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。
FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader。
方法
Reader和InputStreamReader中方法的综合
FileWriter和FileReader复制文本文件 并处理异常
public class CopyDemo { public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try { fr = new FileReader("E:\\ms.txt"); fw = new FileWriter("F:\\grf.txt"); int len = 0; char[] cbuf = new char[1024]; while((len=fr.read(cbuf))>-1){ fw.write(cbuf, 0, len); fw.flush(); } } catch (Exception e) { System.out.println(e.getMessage()); throw new RuntimeException("文件复制失败"); } finally { try { if(fw != null) fw.close(); } catch (IOException e) { throw new RuntimeException("资源释放失败"); } finally { try { if(fr != null) fr.close(); } catch (IOException e) { throw new RuntimeException("资源释放失败"); } } } } }
IO Writer和Reader