字符流 :读的也是二进制文件,他会帮我们解码成我们看的懂的字符。
字符流 = 字节流 + 解码(一)字符输入流:Reader : 它是字符输入流的根类 ,是抽象类FileReader :文件字符输入流 ,读取字符串。
用法: 1.找到目标文件 2.建立数据的通道 3.建立一个缓冲区 4.读取数据 5.关闭资源。(二)字符流输出流: Writer : 字符输出流的根类 ,抽象的类
FileWiter :文件数据的输出字符流 使用注意点: 1.FileReader内部维护了一个1024个字符的数组,所以在写入数据的时候,它是现将数据写入到内部的字符数组中。如果需要将数据写入到硬盘中,需要用到flush()或者关闭或者字符数组数据存满了。
2.如果我需要向文件中追加数据,需要使用new FileWriter(File , boolean)构造方法 ,第二参数true 3.如果指定的文件不存在,也会自己创建一个。字符输出流简单案例
1 import java.io.File; 2 import java.io.FileWriter; 3 import java.io.IOException; 4 5 public class fileWriter { 6 7 /** 8 * @param args 9 * @throws IOException 10 */11 public static void main(String[] args) throws IOException {12 // TODO Auto-generated method stub13 testFileWriter();14 15 }16 17 public static void testFileWriter() throws IOException{18 19 //1.找目标文件20 File file = new File("D:\\a.txt");21 //2.建立通道22 FileWriter fwt = new FileWriter(file,true); //在文件后面继续追加数据23 //3.写入数据(直接写入字符)24 fwt.write("继续讲课");25 //4.关闭数据26 fwt.close();27 }28 }
字符输入流简单案例
1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.IOException; 4 5 public class fileReader { 6 7 public static void main(String[] args) throws IOException { 8 9 //testFileReader();10 testFileReader2();11 }12 //(1)输入字符流的使用 这种方式效率太低。13 public static void testFileReader() throws IOException{14 15 //1.找目标文件16 File file = new File("D:\\a.txt");17 18 //2.建立通道19 FileReader frd = new FileReader(file);20 21 //3.读取数据22 int content = 0; //读取单个字符。效率低23 while ((content = frd.read()) != -1) {24 System.out.print((char)content); 25 }26 27 //4.关闭流28 frd.close();29 }30 31 //(2)32 public static void testFileReader2() throws IOException{33 34 //1.找目标文件35 File file = new File("D:\\a.txt");36 37 //2.建立通道38 FileReader frd = new FileReader(file);39 40 //3.建立一个缓冲区 ,字符数组41 char[] c = new char[1024];42 int length = 0;43 44 //4.读取数据45 while ((length = frd.read(c))!= -1) {46 //字符串输出47 System.out.println(new String(c,0,length));48 }49 //5.关闭资源50 frd.close();51 }52 }