ioWriterAndReader

一、       OutputStreamWriter

(一)            API1.6.0 说明

java.io
类 OutputStreamWriter

java.lang.Object

  java.io.Writer

      java.io.OutputStreamWriter

所有已实现的接口: Closeable, Flushable, Appendable

直接已知子类: FileWriter

public class OutputStreamWriter

extends Writer

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。

每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给 write() 方法的字符没有缓冲。

为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如:

 Writer out = newBufferedWriter(new OutputStreamWriter(System.out));

代理对 是一个字符,它由两个 char 值序列表示:代理项的范围为 '\uD800' 到 '\uDBFF',后跟范围为 '\uDC00' 到 '\uDFFF' 的 代理项。

错误代理元素 指的是后面不跟低代理项的高代理项,或前面没有高代理项的低代理项。

此类总是使用字符集的默认替代序列 替代错误代理元素和不可映射的字符序列。如果需要更多地控制编码过程,则应该使用 CharsetEncoder 类。

从以下版本开始: JDK1.1

另请参见: BufferedWriter, OutputStream, Charset

(二)            Constructor

OutputStreamWriter(OutputStream out)
          创建使用默认字符编码的 OutputStreamWriter。

OutputStreamWriter(OutputStream out, Charset cs)
          创建使用给定字符集的 OutputStreamWriter。

OutputStreamWriter(OutputStream out, CharsetEncoder enc)
          创建使用给定字符集编码器的 OutputStreamWriter。

OutputStreamWriter(OutputStream out, String charsetName)
          创建使用指定字符集的 OutputStreamWriter。

   public staticvoidwriter1() throwsException{

      OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("e:\\fileTest\\osw.txt"));

      osw.write("哈哈哈");

      osw.flush();

      osw.write("heieh");

      osw.close();

   }

(三)            Method

 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)
          写入字符串的某一部分。

   public staticvoidwriter2() throwsException{

      OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("e:\\fileTest\\osw.txt"));

      osw.write("中");

      char[] chars={'h','e','l','l','i','i','2'};

      osw.write(chars);

      osw.write(chars,2,4);

      osw.write("hah哈哈");

      osw.write("ahha哈哈",1,4);

      osw.close();

   }

二、       InputStreamReader

(一)            API1.6.0 说明

java.io
类 InputStreamReader

java.lang.Object

  java.io.Reader

      java.io.InputStreamReader

所有已实现的接口: Closeable, Readable

直接已知子类: FileReader

public class InputStreamReader

extends Reader

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

每次调用 InputStreamReader 中的一个read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装InputStreamReader。例如:

 BufferedReader in= new BufferedReader(new InputStreamReader(System.in));

从以下版本开始: JDK1.1

另请参见: BufferedReader, InputStream, Charset

(二)            Constructor

InputStreamReader(InputStream in)
          创建一个使用默认字符集的 InputStreamReader。

InputStreamReader(InputStream in, Charset cs)
          创建使用给定字符集的 InputStreamReader。

InputStreamReader(InputStream in, CharsetDecoder dec)
          创建使用给定字符集解码器的 InputStreamReader。

InputStreamReader(InputStream in, String charsetName)
          创建使用指定字符集的 InputStreamReader。

   public staticvoidreader1() throwsException{

      InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\fileTest\\osw.txt"));

      InputStreamReader isr2=new InputStreamReader(new FileInputStream("e:\\fileTest\\osw.txt"),"gbk");

      isr.close();

      isr2.close();

   }

(三)            Method

 int

read()
          读取单个字符。

 int

read(char[] cbuf)
          将字符读入数组。

abstract  int

read(char[] cbuf, int off, int len)
          将字符读入数组的某一部分。

 int

read(CharBuffer target)
          试图将字符读入指定的字符缓冲区。

 boolean

ready()
          判断是否准备读取此流。

1.       读取单个字符

   public staticvoidreader2() throwsException{

      InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\fileTest\\osw.txt"));

      int a;

      while((a=isr.read())!=-1){

         System.out.print((char)a);

      }

      isr.close();

   }

2.       读取字符数组

   public staticvoidreader3() throwsException{

      InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\fileTest\\osw.txt"));

      int a;

      char[] chars=newchar[1024];

      while((a=isr.read(chars))!=-1){

         System.out.print(new String(chars,0,a));

      }

      isr.close();

   }

(四)            复制文件

1.       按照单个字符复制

   public staticvoidreader4() throwsException{

      InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\fileTest\\osw.txt"));

      OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("e:\\fileTest\\copy1.txt"));

      int a;

      while((a=isr.read())!=-1){

         osw.write(a);

      }

      osw.close();

      isr.close();

   }

2.       按照字符数组复制

   public staticvoidreader5() throwsException{

      InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\fileTest\\osw.txt"));

      OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("e:\\fileTest\\copy2.txt"));

      int a;

      char[] chars=newchar[1024];

      while((a=isr.read(chars))!=-1){

         osw.write(chars,0,a);

      }

      osw.close();

      isr.close();

   }

三、       FileWriter

(一)            API1.6.0 说明

java.io
类 FileWriter

java.lang.Object

  java.io.Writer

      java.io.OutputStreamWriter

          java.io.FileWriter

所有已实现的接口: Closeable, Flushable, Appendable

public class FileWriter

extends OutputStreamWriter

用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。

文件是否可用或是否可以被创建取决于底层平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

FileWriter 用于写入字符流。要写入原始字节流,请考虑使用FileOutputStream。

从以下版本开始: JDK1.1

另请参见: OutputStreamWriter, FileOutputStream

(二)            ConstructorAndMethod

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)
          根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

 void

write(char[] cbuf, int off, int len)
          写入字符数组的某一部分。

 void

write(int c)
          写入单个字符。

 void

write(String str, int off, int len)
          写入字符串的某一部分。

   public staticvoidfWriter() throws Exception{

      FileWriter fw=new FileWriter("e:\\fileTest\\fw.txt");

      fw.write("哈哈哈");

      fw.close();

   }

四、       FileReader

(一)            API1.6.0 说明

java.io
类 FileReader

java.lang.Object

  java.io.Reader

      java.io.InputStreamReader

          java.io.FileReader

所有已实现的接口: Closeable, Readable

public class FileReader

extends InputStreamReader

用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在FileInputStream 上构造一个 InputStreamReader。

FileReader 用于读取字符流。要读取原始字节流,请考虑使用FileInputStream。

从以下版本开始: JDK1.1

另请参见: InputStreamReader, FileInputStream

(二)            ConstructorAndMethod

FileReader(File file)
          在给定从中读取数据的 File 的情况下创建一个新 FileReader。

FileReader(FileDescriptor fd)
          在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。

FileReader(String fileName)
          在给定从中读取数据的文件名的情况下创建一个新 FileReader。

 int

read()
          读取单个字符。

 int

read(char[] cbuf, int offset, int length)
          将字符读入数组中的某一部分。

   public staticvoidfReader() throwsException{

      FileReader fr=new FileReader("e:\\fileTest\\fw.txt");

      char[] chars=newchar[1024];

      int b;

      while((b=fr.read(chars))!=-1){

         System.out.println(new String(chars,0,b));

      }

      fr.close();

   }

五、       BufferedWriter

(一)            API1.6.0 说明

java.io
类 BufferedWriter

java.lang.Object

  java.io.Writer

      java.io.BufferedWriter

所有已实现的接口: Closeable, Flushable, Appendable

public class BufferedWriter

extends Writer

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

 PrintWriter out =new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。

从以下版本开始: JDK1.1

另请参见: PrintWriter, FileWriter, OutputStreamWriter

(二)            ConstructorAndMethod

BufferedWriter(Writer out)
          创建一个使用默认大小输出缓冲区的缓冲字符输出流。

BufferedWriter(Writer out, int sz)
          创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

 void

write(char[] cbuf, int off, int len)
          写入字符数组的某一部分。

 void

write(int c)
          写入单个字符。

 void

write(String s, int off, int len)

 

BufferedWriter的换行

void

newLine()
          写入一个行分隔符。

   public staticvoidbWriter() throwsException{

      BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\fileTest\\bw.txt")));

      //BufferedWriterbw=new BufferedWriter(new FileWriter("e:\\fileTest\\bw.txt"));

      bw.write("hhh");

      bw.write("hhkkk看");

      bw.close();

   }

  

 public staticvoidbWriter() throwsException{

      BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\fileTest\\bw.txt")));

      //BufferedWriterbw=new BufferedWriter(new FileWriter("e:\\fileTest\\bw.txt"));

      bw.write("hhh");

      bw.write("hhkkk看");

      bw.newLine();

      bw.write("kkk");

      bw.close();

   }

六、       BufferedReader

(一)            API1.6.0 说明

java.io
类 BufferedReader

java.lang.Object

  java.io.Reader

      java.io.BufferedReader

所有已实现的接口: Closeable, Readable

直接已知子类: LineNumberReader

public class BufferedReader

extends Reader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

 BufferedReader in= new BufferedReader(new FileReader("foo.in"));

将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。

通过用合适的 BufferedReader 替代每个DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。

从以下版本开始: JDK1.1

另请参见: FileReader, InputStreamReader

(二)            ConstructorAndMethod

BufferedReader(Reader in)
          创建一个使用默认大小输入缓冲区的缓冲字符输入流。

BufferedReader(Reader in, int sz)
          创建一个使用指定大小输入缓冲区的缓冲字符输入流。

 int

read()
          读取单个字符。

 int

read(char[] cbuf, int off, int len)
          将字符读入数组的某一部分。

   public staticvoidbReader() throwsException{

      BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("e:\\fileTest\\bw.txt")));

      //BufferedReaderbr=new BufferedReader(new FileReader("e:\\fileTest\\bw.txt"));

      int b=0;

      while((b=br.read())!=-1){

         System.out.print((char)b);

      }

      br.close();

   }



   public staticvoidbReader2() throwsException{

      BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("e:\\fileTest\\bw.txt")));

      //BufferedReaderbr=new BufferedReader(new FileReader("e:\\fileTest\\bw.txt"));

      int b=0;

      char[] chars=new char[1024];

      while((b=br.read(chars))!=-1){

         System.out.print(new String(chars,0,b));

      }

      br.close();

   }

BufferedReader的按行读取

 String

readLine()
          读取一个文本行。

   public staticvoidbReader3() throwsException{

      BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("e:\\fileTest\\bw.txt")));

      String str;

      while((str=br.readLine())!=null){

         System.out.println(str);

      }

      br.close();

   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值