字符流
字符流的父类
Reader
Writer
文件字符流
FileReader
package zijieliu;
import java.io.FileReader;
/**
* 使用FileReader
*/
public class demo4 {
public static void main(String[] args) throws Exception{
// 创建FileReader文件输入流
FileReader fileReader = new FileReader("d:\\hello.txt");
// 1. 读取单个字符
int data = 0;
while ((data=fileReader.read())!=-1){ //读取一个字符
System.out.println((char) data);
}
// 2. 读取多行字符
char[] buf = new char[1024];
int count = 0;
while((count = fileReader.read(buf))!=-1){
System.out.println(new String(buf,0,count));
}
fileReader.close();
}
}
FileWriter
package zijieliu;
import java.io.FileWriter;
public class demo5 {
public static void main(String[] args) throws Exception{
FileWriter writer = new FileWriter("d:\\write.txt");
for (int i = 0;i<10;i++){
writer.write("java是最好的语言!\r\n");
writer.flush();
}
writer.close();
System.out.println("执行完成");
}
}
文件复制案例
package zijieliu;
import java.io.FileReader;
import java.io.FileWriter;
/**
* 只能复制文本文件,不能复制二进制文件,图片音频等
*/
public class copy {
public static void main(String[] args) throws Exception{
FileWriter writer = new FileWriter("d:\\write2.txt");
FileReader reader = new FileReader("d:\\write.txt");
// 读写
int data = 0;
while ((data = reader.read())!=-1){
writer.write(data);
writer.flush();
}
writer.close();
reader.close();
System.out.println("执行完成!");
}
}
为什么不能复制图片及二进制文件?
二进制代码没有对应的字符,没有办法解析,导致乱码
- 字符流只能复制有字符编码的文件
- 字节流可以复制任何文件
字符缓冲流
BufferedReader
package zijieliu;
import java.io.BufferedReader;
import java.io.FileReader;
public class demo6 {
public static void main(String[] args) throws Exception{
// 创建缓冲流
FileReader reader = new FileReader("d:\\write.txt");
BufferedReader bufferedReader = new BufferedReader(reader);
// 1. 第一种方式
// char[]buf = new char[1024];
// int count = 0;
// while((count = bufferedReader.read(buf))!= -1){
// System.out.println(new String(buf,0,count));
// }
// 第二种方式(读一行)
String line = null;
while ((line = bufferedReader.readLine())!= null){
System.out.println(line);
}
bufferedReader.close();
}
}
BufferedWriter
package zijieliu;
import java.io.BufferedWriter;
import java.io.FileWriter;
public class demo7 {
public static void main(String[] args)throws Exception {
FileWriter writer = new FileWriter("d:\\aaaa.txt");
BufferedWriter bufferedWriter = new BufferedWriter(writer);
for (int i = 0;i<10;i++){
bufferedWriter.write("我要上天,别拦我!\r\n");
bufferedWriter.flush();
}
bufferedWriter.close();
System.out.println("执行完毕!");
}
}
bufferedWriter.newLine();
也是换行符,类似于\r\n
上一节(序列化与反序列化) 下一节(转换流&&PrintWriter)