字符流会根据当前操作系统与语言环境选择适当的字符编码方式读写文件,适合读取文本文件。因为字符流会对文件内容编码,所以不能用于读取二进制文件;读文件使用文件输入流(FileReader)和缓存输入流(BufferedReader)
FileReader(文件输入流),BufferedReader(缓存输入流)BufferedReader提供了按行读取文本文件的功能,一次读取一行,读到文件尾返回null
package io;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Fileread {
public static void main(String[] args) {
try {
FileReader fileReader=new FileReader("E:\java学习\day20-IO流\课件\111111.txt");
BufferedReader bufferedReader=new BufferedReader(fileReader);
String s;
//使用BufferReader的readline()的结果为String
//如果使用fileReader的read()结果为byte
while ((s= bufferedReader.readLine())!=null){
System.out.println(s);
}
//关闭bufferReader即可
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果:
BufferedWriter提供了输出整个字符串的方法
注意:如果要输出换行符,不能简单的使用”n”,因为不同操作系统定义的换行符是不一样的,推荐使用BufferedWriter提供的newLine()方法输出换行
public class FileWriterDemo {
public static void main(String[] args) {
File f = new File("E:\java学习\day20-IO流\课件\111111.txt");
try {
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("中文输出也没有问题");
//换行
bw.newLine();
bw.write("换行推荐使用newLine()方法");
bw.close();
} catch (IOException e) {
}
}
}
InputStreamReader和OutputStreamWriter(字节输入输出流)
InputStreamReader和OutputStreamWriter能够通过指定的编码形式将字节流转换为字符流,并进行读写操作。有两种情况需要使用字节输入输出流
- 不使用默认的字符编码格式,需要指定编码格式。
- 第三方提供了基于字节的流,想包装为基于字符的流。
OutputStreamWriter类写入utf-8编码文件
public class OutputStreamWriterDemo {
public static void main(String[] args) {
File f = new File("E:\java学习\day20-IO流\课件\111111.txt");
try {
FileOutputStream fr = new FileOutputStream(f);
//传入fileoutstream对象,和编码格式
OutputStreamWriter osw = new OutputStreamWriter(fr, "utf-8");
BufferedWriter bw = new BufferedWriter(osw);
//写入
bw.write("轻轻的你来了,正如你轻轻的走");
bw.newLine();
bw.write("你挥一挥衣袖");
//只需要关闭bufferedwriter
bw.close();
System.out.println("写入完毕");
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
}
InputStreamReader读取utf-8编码文件
public class InputStreamReaderDemo {
public static void main(String[] args) {
File f = new File("E:\java学习\day20-IO流\课件\111111.txt");
try {
FileInputStream fr = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fr, "utf-8");
BufferedReader br = new BufferedReader(isr);
String s;
while ((s=br.readLine())!=null) {
System.out.println(s);
}
br.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
}



