javaIO--字符流
java提供字符流对自否刘式文件进行数据读写操作。字符输入流类是Reader及其子类,输出流是Writer及其子类。
另外,上一篇javaIO写的是字节流,字节流方式也可以对以字符为基本类型的流式文件读写。
1 采用文件字节流,将字节缓冲区数组中的字节转换成字符
2 采用数据字节流,readChar()方法读取一个字符,writerChar(int c)方法写入一个字符,writerChars(String s)方法写入一个字符串。
ps:DataInputStream类中的读取一行字符串的readLine()方法已过时,被BufferReader类中的readLine()取代。
Reader类的子类:InputStreamReader(字节输入流转换成字符输入流 <--Filereader(文件字符输入流))、FilerReader(过滤器字符输入流)、PipedReader(管道字符输入流)、BufferReader(缓冲字符输入流)。
Writer类的子类:OutputStreamReader(字节输入流转换成字符输入流 <--FileWriter(文件字符输入流))、FilerWriter(过滤器字符输入流)、PipedWriter(管道字符输入流)、BufferWriter(缓冲字符输入流)、PrintWriter(格式化字符输出流)。
下面是一个对文件进行字符型IO的实例,将Fibonacci序列值写入文本
1 public class IOtestChar { 2 public static void main(String[] args) throws IOException { 3 TextFile afile = new TextFile("fibText.txt"); 4 afile.writeToText(); 5 afile.readFromText(); 6 } 7 8 //文本文件的读写操作,以字符串为单位:将fibonacci序列值写入文本文件 9 static class TextFile{ 10 private String filename; 11 public TextFile(String filename){ 12 this.filename = filename; 13 } 14 15 public void writeToText() throws IOException{ 16 FileWriter fout = new FileWriter(this.filename); 17 short i = 0, j = 1; 18 do{ 19 fout.write(i + " " + j + " "); 20 i = (short)(i+j); 21 j = (short)(i+j); 22 }while(i > 0); 23 fout.close(); 24 } 25 26 public void readFromText() throws IOException{ 27 FileReader fin = new FileReader(this.filename); 28 BufferedReader bin = new BufferedReader(fin); 29 System.out.println(this.filename + ": "); 30 String aline = ""; 31 while((aline = bin.readLine()) != null){ 32 System.out.println(aline); 33 } 34 bin.close(); 35 fin.close(); 36 } 37 } 38 }