黑马程序员----【javaSE基础】IO--字符流
来源:互联网 发布:c语言进程的创建 编辑:程序博客网 时间:2024/05/01 12:49
------- 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培训、期待与您交流! ----------
- 黑马程序员----【javaSE基础】IO--字符流
- 黑马程序员----【javaSE基础】IO--字节流
- 黑马程序员----JAVASE之IO流操作【字符流】
- 黑马程序员-java基础 io字符流
- 黑马程序员-关于IO字符流基础
- 黑马程序员--java基础:字符IO流
- 黑马程序员-javaSE学习之IO流
- 黑马程序员-JAVASE入门( IO流 )
- 黑马程序员 JavaSE-11 IO流
- 黑马程序员—javaSE—IO流
- 黑马程序员java 基础之io流中的字符流
- 黑马程序员--java基础--IO流(一)字符流
- 【黑马程序员】----Java 基础之 IO流__字符流
- 黑马程序员——Java基础---IO流(字符流)
- 『黑马程序员』---java--IO--字符流基础
- 黑马程序员——java基础---IO---字符流
- 黑马程序员——java基础---IO---字符流
- 黑马程序员-javase-io(1)
- 黑马程序员----【javaSE基础】IO--字节流
- hdu 4619(sap解二分匹配)
- hdu4300
- C#操作Informix数据库
- 又议android中的manifest清单文件
- 黑马程序员----【javaSE基础】IO--字符流
- UVA 350 Pseudo-Random Numbers
- C++虚函数与虚函数表(编译器查看)
- 黑马程序员—SQL系列 (一)
- 如何添加账户到sudoers
- STL中的set容器的一点总结
- UVA 10392 Factoring Large Numbers
- 开源软件正在逐步改变全球软件开发的格局
- vga xvga uvga