字符流和字符缓冲流
字符流
FileWriter
1. FileWriter类的构造方法
- FileWriter(File file)
根据给定的 File 对象构造一个 FileWriter 对象
- FileWriter(File file, boolean append)
根据给定的 File 对象构造一个 FileWriter 对象 - FileWriter(String fileName)
根据给定的文件名构造一个 FileWriter 对象 - FileWriter(String fileName, boolean append)
根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象
2. 成员方法
- void write(int c)
写一个字符 - void write(char[] cbuf)
写入一个字符数组 - void write(char[] cbuf, int off, int len)
写入字符数组的一部分 - void write(String str)
写一个字符串 - void write(String str, int off, int len)
写一个字符串的一部分
示例代码
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo1 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("io-practice\\FileWriterDemo1.txt");
//void write(int c)写一个字符
fw.write(97);
fw.write(98);
fw.write(99);
fw.write(100);
//在字符输出流中换行
fw.write("\r\n");
//void write(char[] cbuf)写入一个字符数组
//注意:此处虽然是字符数组
//但是字符型数据与整型数据之间可以通用
//整型数据在这里对应字符集中相应的字符
//允许对整形变量赋予字符值,也允许对字符变量赋整形值
char[] charArray1 = {97,98,99,100};
fw.write(charArray1);
fw.write("\r\n");
char[] charArray2 = {'a','b','c','d'};
fw.write(charArray2);
fw.write("\r\n");
//void write(char[] cbuf, int off, int len)写入字符数组的一部分
fw.write(charArray2,0,2);
fw.write("\r\n");
//void write(String str)写一个字符串
fw.write("NetEase");
fw.write("\r\n");
//void write(String str, int off, int len)写一个字符串的一部分
fw.write("NetEase",0,"NetEase".length());
fw.write("\r\n");
//关闭字符输出流,释放资源
fw.close();
}
}
FileReader
1. FileReader类的构造方法
- FileReader(File file)
传入一个File对象,创建一个新 FileReader
- FileReader(String fileName)
传入一个目录的路径,创建一个新 FileReader
2. 成员方法
- int read()
一次读一个字符数据 - int read(char[] cbuf)
一次读一个字符数组数据
示例代码
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo1 {
public static void main(String[] args) throws IOException {
//int read()一次读一个字符数据
FileReader fr = new FileReader("io-practice\\four.txt");
// int b;
// while((b = fr.read())!= -1){
// System.out.print((char)b);
// }
//int read(char[] cbuf)一次读一个字符数组数据
//表示读取字符时一次性读取1024个字符,并存入字符数组中
char[] charArray = new char[1024];
//len表示当前读取到的字符数目
int len;
while((len = fr.read(charArray)) != -1){
//该String的构造方法是将字符数组从0索引开始,长度为len的字符转化为字符串对象
System.out.print(new String(charArray,0,len));
}
fr.close();
}
}
字符缓冲流
BufferedWriter
- BufferedWriter类
提升字符输出流的写入效率 - 构造方法
BufferedWriter(Writer out)
创建字符缓冲输出流对象
示例代码
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterDemo1 {
public static void main(String[] args) throws IOException {
//io-practice表示的是我要写入的这个文件在当前模块(module)下
BufferedWriter bw = new BufferedWriter(new FileWriter("io-practice\\BufferedWriter.txt"));
bw.write(97);
//换行
bw.write("\r\n");
bw.write("lainanizuoa");
bw.write("\r\n");
String s = "lainanizuoa";
bw.write(s,0,5);
bw.write("\r\n");
char[] charArray = {97,98,99};
bw.write(charArray);
bw.write("\r\n");
bw.write(charArray,0,2);
bw.write("\r\n");
bw.flush();
bw.close();
}
}
BufferedReader
- BufferedReader类
提升字符输入流的读取效率 - 构造方法
BufferedReader(Reader in)
创建字符缓冲输入流对象
示例代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderDemo1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("io-practice\\BufferedWriter.txt"));
char[] charArray = new char[1024];
int len;
while((len = br.read(charArray)) != -1){
System.out.println(new String(charArray,0,len));
}
br.close();
}
}
字符缓冲流的特有方法
- BufferedWriter:
void newLine()
写一行行分隔符,行分隔符字符串由系统属性定义
- BufferedReader:
String readLine()
读一行文字。 结果包含行的内容的字符串,
不包括任何行终止字符如果流的结尾已经到达,则为null
示例代码
import java.io.*;
public class BufferedWriterAndReaderDemo1 {
public static void main(String[] args) throws IOException {
//使用BufferedWriter类的newLine()方法来进行字符输出流中的换行操作
BufferedWriter bw = new BufferedWriter(new FileWriter("io-practice\\five.txt"));
for (int i = 0; i < 5; i++) {
bw.write("莱纳你坐啊!");
//换行
bw.newLine();
bw.flush();
}
bw.close();
//使用BufferedReader类的方法readLine()读取一行的字符
//当读取到文件的最后一行字符时,再读下一行时读取到的是null
BufferedReader br = new BufferedReader(new FileReader("io-practice\\five.txt"));
String line;
while((line = br.readLine()) != null){
System.out.println(line);
}
br.close();
}
}