BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。
System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args){
try{
BufferedReader bufReader=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufWriter = new BufferedWriter(new FileWriter(args[0]));
String input = null;
while(!(input = bufReader.readLine()).equals("quit"))
{
bufWriter.write(input);
bufWriter.newLine();
}
bufReader.close();
bufWriter.close();
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("没有指定文件");
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* BufferedReader
* 缓冲字符输入流
* 可以以行为单位读取字符串
* @author Administrator
*/
public class FileDemo {
public static void main(String[] args) throws IOException{
FileInputStream fis= new FileInputStream("pw.txt");
InputStreamReader isr= new InputStreamReader(fis,"UTF-8");
BufferedReader br= new BufferedReader(isr);
String str = null;
while((str=br.readLine())!=null){
System.out.println(str);
}
br.close();
}
}
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* BufferedReader
* 缓冲字符输入流
* 可以以行为单位读取字符串
* @author Administrator
*/
/**
* InputStreamReader
* 字符输入流
* 用于读取字符数据的流
* @author Administrator
*
*/
public class FileDemo {
public static void main(String[] args) throws IOException{
FileInputStream fis= new FileInputStream("pw.txt");
InputStreamReader isr= new InputStreamReader(fis,"UTF-8");
BufferedReader br= new BufferedReader(isr);
String str = null;
while((str=br.readLine())!=null){
System.out.println(str);
}
br.close();
isr.close();
FileInputStream fis1= new FileInputStream("pw.txt");
FileOutputStream fos= new FileOutputStream("pw1.txt");
InputStreamReader isr1= new InputStreamReader(fis1);
OutputStreamWriter osw= new OutputStreamWriter(fos);
int d = -1;
while((d=isr1.read())!=-1){
osw.write(d);
}
System.out.println("拷贝完毕");
isr1.close();
osw.close();
}
}