使用BufferedReader和BufferedWriter類來實(shí)現(xiàn)文件拷貝
大家好,我是Java進(jìn)階者。
前言
本文主要學(xué)習(xí)BufferedReader類讀取文本文件的內(nèi)容,BufferedWriter類向文本文件寫入內(nèi)容,使用BufferedReader和BufferedWriter類來實(shí)現(xiàn)文件拷貝。接下來小編帶大家一起來學(xué)習(xí)!
一、 BufferedReader類
1.BufferedReader類是帶有緩沖區(qū)的字符輸入流,一般與FileReader和InputStreamReader類一起使用,它是緩沖輸入流再從緩沖區(qū)讀取數(shù)據(jù)。
2.BufferedReader的構(gòu)造方法
(1)public BufferedReader(Reader in):創(chuàng)建一個(gè)指定大小輸入緩沖區(qū)的緩沖字符輸入流,in參數(shù)是指定Reader流對(duì)象。
(2)public BufferedReader(Reader in,int sz):創(chuàng)建的緩沖輸入流對(duì)象指向參數(shù)in指定大小(sz)輸入緩沖區(qū)的Reader流對(duì)象。
3.BufferedReader流能夠讀取文本行,可以通過BufferedReader傳遞一個(gè)Reader對(duì)象,來創(chuàng)建一個(gè)BufferedRader對(duì)象,再調(diào)用用readLine()方法讀取文本的行。這樣做的原因是FileReader沒有讀取文本行的功能。
4.BufferedReader方法:
(1)public int read() throws IOException:讀取單個(gè)字符,方法返回一個(gè)整數(shù)(0~65535之間的一個(gè)整數(shù))讀入的字符,若到流末尾,返回-1。
(2)public int read(char[] cbuf) throws IOException:讀取多個(gè)字符到字符數(shù)組cbuf。
(3)public void close() throws IOException:表示關(guān)閉流。
(4)public String readLine() throws IOException:讀取一個(gè)文本的行。
5.如何使用BufferedReader來讀取文本數(shù)據(jù)?
- import java.io.*;
- public class P15 {
- public static void main(String[] args) throws Exception{
- // TODO Auto-generated method stub
- BufferedReader br = new BufferedReader(new FileReader("text/test"));
- //定義字符數(shù)組用來一次性讀取
- char[] c = new char[1024] ;
- int num = 0 ;
- //判斷是否讀到文本末尾
- while((num=br.read(c))!=-1) {
- System.out.println(new String(c,0,num));
- }
- //關(guān)閉流
- br.close();
- }
- }
運(yùn)行的結(jié)果如下所示:
二、BufferedWriter類
1.BufferedWriter類是帶有緩沖區(qū)的字符輸出流,一般與FileWriter連接一起,再使用BufferedWriter將數(shù)據(jù)寫入的功能。FileWriter是BufferedWriter的底層流,BufferedWriter是把數(shù)據(jù)寫入緩沖區(qū),底層流再把數(shù)據(jù)寫入文本文件中。
2.BufferedWriter類構(gòu)造方法
(1)public BufferedWriter(Writer out):創(chuàng)建一個(gè)指定大小輸入緩沖區(qū)的緩沖字符輸入流,out參數(shù)是指定Writer流對(duì)象。
(2)public BufferedWriter(Writer out,int sz):創(chuàng)建的緩沖輸入流對(duì)象指向參數(shù)in指定大小(sz)輸入緩沖區(qū)的Writer流對(duì)象。
3.BufferedWriter類構(gòu)造方法例子
- FileWriter fw=new FileWriter("test.txt");
- BufferedWriter bw=new BufferedWriter(fw);
4.BufferedWriter方法:
(1)public void write(String str) throws IOException方法:寫入一個(gè)字符串。
(2)public void write(String str,int off,int len) throws IOException方法:從字符串str的off偏移量開始寫入len個(gè)字符。
(3)public String newLine() throws IOException:向文本文件寫入一個(gè)換行。
(4)public void flush():刷新緩沖區(qū)。
5.如何使用BufferedWriter寫入數(shù)據(jù)?
- import java.io.*;
- public class P16 {
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- //創(chuàng)建一個(gè)BufferedWriter緩沖對(duì)象
- FileWriter fw = new FileWriter("text/test16");
- BufferedWriter bw = new BufferedWriter(fw);
- //向文件中寫入內(nèi)容
- bw.write("第一行內(nèi)容是Java學(xué)習(xí)");
- //換行
- bw.newLine();
- bw.write("第二行內(nèi)容是Python學(xué)習(xí)");
- //關(guān)閉流
- bw.close();
- }
- }
運(yùn)行的結(jié)果如下所示:
三、如何使用BufferedReader和BufferedWriter類來實(shí)現(xiàn)文件拷貝?
1.首先在text目錄下創(chuàng)建test01.txt并寫入"第一行寫入Java學(xué)習(xí),第二行寫入進(jìn)階交流公眾號(hào)"內(nèi)容。
2.代碼的實(shí)現(xiàn):
- import java.io.*;
- public class P17 {
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- //創(chuàng)建一個(gè)BufferedReader緩沖對(duì)象
- FileReader fr=new FileReader("text/test01");
- BufferedReader br=new BufferedReader(fr);
- //創(chuàng)建一個(gè)BufferedWriter緩沖對(duì)象
- FileWriter fw=new FileWriter("text/test02");
- BufferedWriter bw=new BufferedWriter(fw);
- String s;
- //判斷是否到文本文件末尾
- while((s=br.readLine())!=null){
- bw.write(s);
- //換行
- bw.newLine();
- }
- //關(guān)閉流
- br.close();
- bw.close();
- }
- }
運(yùn)行的結(jié)果如下圖所示:
從上面代碼中,通過一個(gè)while循環(huán)實(shí)現(xiàn)文本文件的拷貝。每次循環(huán)過程中都使用readLine()方法讀取文件的行,再調(diào)用write()方法寫入文件。
四、總結(jié)
本文主要介紹了BufferedReader類、BufferedWriter類、使用BufferedReader和BufferedWriter類來實(shí)現(xiàn)文件拷貝。BufferedReader類介紹了它的構(gòu)造方法和方法,通過一個(gè)案例來學(xué)習(xí)BufferedReader來讀取文本文件的內(nèi)容。BufferedWriter類介紹了它的構(gòu)造方法和方法,通過一個(gè)案例學(xué)習(xí)BufferedWriter向文本文件寫入內(nèi)容。使用BufferedReader和BufferedWriter類來實(shí)現(xiàn)文件拷貝例子了解它的用法。希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!