黑马程序员----【javaSE基础】IO--字符流

 ------- android培训java培训、期待与您交流! ----------

一、

流有输入输出,字符流是说流的输入输出形式是字符。它们是处理文本文件,对字符进行处理。

最基础的两个类是:Reader 和Writer。

Reader的常用构造方法:Reader();

Reader的常用方法:int read(); int read(char[] buf); int read(charBuffer buf); void close();

Writer的常用构造方法:Writer();

Writer的常用方法:void write(char c); void write(String s); void write(char[] buf); void flush(); void close();

字符流的输出的父类中就有直接写字符串的方法。

二、

Reader的子类:BufferedReader,InputStreamReader,FileReader。

1.BufferedReader,字符输入缓冲流,用于提高效率。

BufferedReader的常用构造方法:BufferedReader(Reader in);

常用方法:int read(); int readLine();牛X的方法,直接读一行,Writer方法有写一行的,读一行的方法在BufferedReader给出。

2.InputStreamReader,是转换流,把字节流转换为字符流。

常用构造方法:

InputStreamReader(InputStream in);使用默认字符集,也就是GBK;

InputStreamReader(InputStream in, String charsetName);使用指定字符集,可以是UTF-8,或其他。

其他方法:只是重写父类的方法。

这里注意,因为字符的编码形式有很多中,常见的有中国的GBK,国际通用的Unicode,以及简化的UTF-8.而解码形式一定要和编码形式相同,否则会出现乱码,而流中,用转换流处理这种编码问题是最方便的,它也是主要处理这个问题而生的。

3.FileReader,字符文件输入流,一般是文本文件。它不是Reader的直接子类,而是InputStreamReader的直接子类。

常用构造方法:FileReader(File file) ;FileReader(String fileName);

常用方法:都是继承自父类。

注意,FileReader的构造方法除了自身的那些外,还有继承自父类的可以指定字符集的方法。

三、

Writer的子类:BufferWriter,OutputStreamWriter,FileWriter,PrintWriter

1.BufferedWriter,字符缓冲输出流,提高效率。

构造方法:BufferedWriter(Writer out);

常用方法:除了继承自父类的writeLine(),还有自己的newLine();用于换行,这是因为各个系统的换行符不同,用newLIne可以统一,到哪个系统上都是换行。

2.OutputStreamWriter,转换流,字节流转换为字符流。

构造方法:OutputStreamWriter(OutputStream out)OutputStreamWriter(OutputStream out, String charsetName);指定字符集。

常用方法:都是的父类的方法。

3.FileWriter,字符文件输入流,其直接父类不是Writer,而是OutputStreamWriter。用于把数据从程序读到文件中。

构造方法:FileWriter(File file) ;FileWriter(String fileName);

FileWriter(String fileName, boolean append) ;第二个参数如果是true,则续写,不会覆盖原文件,如果为false,则覆盖。

常用方法:都是父类的方法。

4.PrintWriter,打印输出流,和printOutputStream一样,从输出的角度来说,这个流是无敌的。

构造方法:PrintWriter(File file);PrintWriter(OutputStream out);PrintWriter(String fileName);

PrintWriter(Writer out); PrintWriter(File file, String csn) ;指定字符集。

PrintWriter(OutputStream out, boolean autoFlush) ;第二个参数为true,则自动刷新,不用flush().

PrintWriter(Writer out, boolean autoFlush) ;可以自动刷新。

常用方法:print(char c);print(int n);print(String s);打印等等。

println(char c);换行打印,等等。

四、基础字符数据的输入输出代码。

功能:把字符文件读入程序,再把数据输出到另一个地方,实现文本文件的复制。

import java.io.*;

public class FileDemo {

 public static void main(String[] args) {
  FileReader fr = null;
  FileWriter fw = null;
  int len = 0;
  char[] buf = new char[1024];
  
  try {
   fr = new FileReader("D:\\FileTest1.java");
   fw = new FileWriter("D:\\FileTest2.java");
    
   while((len=fr.read(buf)) != -1){
    fw.write(new String(buf,0,len));
    fw.flush();
   } 
   
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   try {
    if(fr != null)
     fr.close();
    if(fw != null) 
     fw.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}


 ------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值