1、bufferedWriter
①为了提高写入的效率,使用了字符流的缓冲区。
FileWriter fw=new FileWriter(“buf.txt”);
BufferedWriter bufw=new BufferedWriter(fw); // 创建一个字符写入流的缓冲区对象,并和指定要被缓冲
的流对象相关联。
bufw.write(“...”); // 使用缓冲区的写入方法将数据写入到缓冲区中;
Bufw.flush(); //使用缓冲区的刷新方法将数据刷到目的地中;
bufw.close(); // 关闭缓冲区;并且也将流关闭了。
② newLine();
2、bufferedReader的
①
FileReader fr=new FileReader();
BufferedReader bufr=new BufferedReader(fr); // 创建一个缓冲区对象
String line=null;
While((line=bufr.readLine())!=null){ //}
② readLine();
③ bufr.read() ;这个read是从缓冲区中的读取字符数据。所以覆盖了父类中的read方法。
为了
④ bufr.readLine();到这步read()就可以操作缓冲区读取到的字符了,但是有根据文本行的特点,可以按照
行进行读取,于是有了新的方法readLine(); 于是也就有了一个临时容器来存储一行数据,但不包含换行符。
3、
① 不使用缓冲区来实现文件复制
private static final int BUFFER_SIZE = 1024;
public static void main(String[] args) throws IOException {
//用读取字符流实现文件复写
FileReader fr=null;
FileWriter fw=null;
try{
fr=new FileReader("1.txt");
fw=new FileWriter("1_copy.txt");
int len=0;
char[] buf=new char[BUFFER_SIZE];
while((len=fr.read(buf))!=-1){
fw.write(buf,0,len);
}
}catch(IOException e){
throw new RuntimeException("读写失败");
}finally{
if(fw!=null) //关闭源
try{
fw.close();
}catch(IOException e){
e.printStackTrace();
}
if(fr!=null)
try{
fr.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
②用缓冲区字符流实现文件复写
//用缓冲区字符流实现文件复写
FileReader fr=new FileReader("demo.txt");
BufferedReader bufr=new BufferedReader(fr);
FileWriter fw=new FileWriter("demo_copy.txt");
BufferedWriter bufw=new BufferedWriter(fw);
// int ch=0; //读写的第一种方式 使用读取一个字符进行操作
// while((ch=bufr.read())!=-1){ //这是直接从内存的缓冲区读
// bufw.write(ch); // 这是往内存的缓冲区写
// }
String line=null; //读写入的第二种方式 使用正行进行操作
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
4、LineNumberReader ——操作行号 的字符流对象
5、OutputStream ——字节流输出对象,用于操作文件。
FileOutputStream fos=new FileOutputStream (“demo.txt”); //创建字节输出流对象,用于操作文件
Fos.write(“output”.getBytes()); //写数据,直接写到目的地中
Fos.cloase(); //关闭资源
|
|