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("资源释放失败");
                }
            }
        }
    }
}
时间: 2024-10-29 10:47:45

IO Writer和Reader的相关文章

java IO文件读写例子(OutputStream,InputStream,Writer,Reader)

一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package com.hbut.io; import java.io.File; import java.io.IOException; public class FileDemo { public static void main(String[] args) { File file = new File("

Java IO操作——字节流(OutputStream、InputStream)和字符流(Writer、Reader)

学习目标 掌握流的概念 掌握字节流与字符流的作用 掌握文件的标准操作步骤 掌握字节与字符操作的区别 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序中需要数据的时候就用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形式保存的,流中保存的实际上全部是字节文件. 字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流和字符流,两类都分为输入和输出操作.在字节流中输出数据主要是使用OutputStream完成,输入

字节流与字符流简单操作(OutputStream、InputStream、Writer、Reader)

操作流程 使用File类打开一个文件 通过字节流或者字符流的子类.指定输出的位置. 进行读/写操作 关闭输入/出 字节流与字符流 在java.io包中操作文件内容主要有两大类:字节流字符流.两大类分为输入和输出操作,在字节流中输出数据主要是OutputStream完成,输入使用InputStream,在字符流冲输出主要是使用Writer类完成,输入主要是Reader完成 字节流 字节流主要是操作byte类型数据,以byte数组为准,主要操作类是OutputStream和InputSream 字节

java 字符流writer、reader基本操作及理解

字符和字节有什么区别,额--这个我也不知道. 1.基本操作实例 import java.io.*; public class CharDemo { public static void main(String[] args) { File f=new File("F:\\workspace\\Javaprj\\test.txt"); Writer out=null; Reader in=null; try { out=new FileWriter(f); String str=&quo

javaIO流--Writer,Reader

Writer /** *<li> Writer中定义的一个重要的方法: * public void writer(String str)throws IOException; */ package com.java.demo; import java.io.File; import java.io.FileWriter; import java.io.Writer; public class TestDemo { public static void main(String args[]) t

Go语言之Writer 和 Reader

输入和输出 Go Writer 和 Reader接口的设计遵循了Unix的输入和输出,一个程序的输出可以是另外一个程序的输入.他们的功能单一并且纯粹,这样就可以非常容易的编写程序代码,又可以通过组合的概念,让我们的程序做更多的事情. 比如我们在上一篇的Go log中,就介绍了Unix的三种输入输出输入模式,他们对应的Go语言里有专门的实现. var (    Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")    Stdout

JavaIO(04)字符流--Writer and Reader

字符流: 常识:在java中一个字符等于两个字节: 操作字符流的两个类:Writer,Reader API文档介绍(Writer): public abstract class Writer extends Object implements Appendable, Closeable, Flushable 发现此类依然是抽象类,如果使用子类还是需要使用该子类,FileWriter; Writer类的常用方法: 关闭该流,但要先刷新它: public abstract void close() 

同步阻塞式I/O(二)——基于字符的Writer、Reader

不管是磁盘还是网络传输,最小的存储单元都是字节,而不是字符,所以 I/O 操作的都是字节而不是字符,但是为啥有操作字符的 I/O 接口呢?这是因为我们的程序中通常操作的数据都是以字符形式,有时我们必须把来自于"字节"层次结构中的类和"字符"层次结构中的类结合起来使用,为了实现这个目的,要用到"适配器"类:InputStreamReader可以把InputStream转化为Reader,而OutputStreamWriter可以把OutputStr

JAVA IO包的整理---------Writer和Reader

一 Writer public abstract class Writer extends Object implements Appendable, Closeable, Flushable 这个类表示的是输入字符的输入流.然后这个类中有一个同步锁,用来同步这个流内的操作.然后就是这个流和FileInputStream不同的是,它提供了append的方法来实现追加. 然后也有flush,write,close的方法.然后就是既然可以写入字符,那其实也就是可以写入String了.因为这个类并不是