一、字符流介绍
➢FileInputStram类和FileOutputStream类 虽然可以高效率地读/写文件,但对于Unicode编码的文件,使用它们有可能出现乱码(中文)
;所以,从JDK1.1开始,java.io 包中加入了专门用于字符流处理的类
,它们是以Reader和Writer为基础派生的一系列类。
➢使用字符流将涉及到以下4个类:
●FileReader类和FileWriter类;
●BufferedReader类和BufferedWriter类
二、 字符流 读取流的操作
public class ReaderDemo {
public static void main(String[] args) {
//创建一个File对象用来指明你读取的文件位置
File file = new File("t3.txt");
//创建字符流的缓存流
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
//开始进行读操作
String str;
//使用循环来读取
while((str=br.readLine())!=null) {//字符流读到末尾是null
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(br!=null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
三、字符流 写入流操作
public class WriterDemo {
public static void main(String[] args) {
//先不创建File对象
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("t4.txt"));
//调用方法进行写数据
bw.write("大家好!");
bw.append("今天天气真好");
bw.write("你觉得对不对啊?");
bw.newLine();//换行
bw.write("请多多指教");
//我们很多时候,除了使用缓冲流来完成字符流的输出的话,还喜欢使用PrintWriter这个流
PrintWriter pw = new PrintWriter("t5.txt");
pw.println("你好啊!");
pw.println("我好啊!");
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bw!=null) {
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
四、输入流和输出流结合
public class ReaderAndWriterDemo {
public static void main(String[] args) {
//创建字符流的缓存流
BufferedReader br = null;
PrintWriter pw = null;
try {
br = new BufferedReader(new FileReader("t3.txt"));
pw = new PrintWriter(new FileWriter("t5.txt",true));
//开始进行读操作
String str;
//使用循环来读取
while((str=br.readLine())!=null) {//字符流读到末尾是null
pw.append(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(pw!=null) {
pw.close();
}
if(br!=null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
三、FilerReader和FileWriter
1、FileReader的介绍
FileReader类是Reader下InputStreamReader的子类,它是用来读取文件的便捷类,允许
以字符流的形式对文件进行读操作,虽然我们可以通过构造方法来创建一个该对象,但是该对
象的读取方式是以字符一个个读取的形式来读取文件的,效率低下,所以我们一般直接使用它
的过滤流(BufferedReader)来进行读取文件内容的操作。
2、FileWriter的介绍
FileWriter类是Writer’下的OutputStreamWriter的子类,它是用来写文件的便捷类,它跟
FileReader-样,我们一般是直接操作它的过滤流(BufferedWriter)来写入文件内容的操作。