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