BufferedReader和BufferedWriter都属于字符流,是按照字节来读取数据的。
BufferedReader
如下代码使用BufferedReader读取./a.txt 中的数据
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws IOException {
// 给filereader创建缓冲区
BufferedReader bufferedReader = new BufferedReader(new FileReader("./a.txt"));
// 读取数据
String s = bufferedReader.readLine();
if (s!=null)
{
System.out.println(s);
}
else
{
System.out.println("a.txt is empty");
}
bufferedReader.close();
}
}
BufferedWriter
如下代码使用BufferedWriter写入字符串到./a.txt中。
import java.io.*;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws IOException {
//创建bufferedwriter缓冲区
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("./a.txt"));
// 写入数据
bufferedWriter.write("This is a test");
// 输入一个和系统匹配的换行
bufferedWriter.newLine();
// 写入数据
bufferedWriter.write("Today is raining");
bufferedWriter.close();
}
}
案例
完成文档拷贝,复制a.txt 为a2.txt
代码如下
import java.awt.print.PrinterAbortException;
import java.io.*;
public class FileCopy {
private String target;
private String path;
public FileCopy(String target,String path) throws IOException
{
this.target=target;
this.path = path;
this.dothis();
}
private boolean dothis() throws IOException
{
// 判断文件是否存在
File file = new File(this.path);
if(file.exists()==false)
{
System.out.println("Error "+this.path+"not exists");
return false;
}
// 读取文件
BufferedReader bufferedReader = new BufferedReader(new FileReader(this.path));
// 写入文件
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(this.target));
String s;
while ((s=bufferedReader.readLine())!=null)
{
// 写入数据
bufferedWriter.write(s);
// 新的一行
bufferedWriter.newLine();
}
bufferedWriter.close();
return true;
}
}
public class Main {
public static void main(String[] args) throws IOException {
FileCopy fileCopy = new FileCopy("a2.txt", "a.txt");
}
}