滴水穿石-08IO

1.0 Filejava

a:構造方法數組

package d8;

import java.io.File;

public class FileGouZao {
    public static void main(String[] args) {
        //方式一:根據一個路徑獲得一個一個file對象
        //File(String pathName)
        File fe = new File("D:\\aaa\\a.txt");
        
        //方式二,經過父路徑的名字 + 子文件/目錄獲得一個File對象
        //File(String parent,String child)
        File fe2 = new File("D:\\aaa","a.txt");
        
        //方式三,經過父File對象 + 子文件/目錄獲得一個File對象
        //File(File parent,String child)
        File fe3 = new File("D:\\aaa");
        File fe4 = new File(fe3,"D:\\aaa");
    }
}
1.0

b:建立方法app

package d8;

import java.io.File;
import java.io.IOException;

public class FileGouAdd {
    public static void main(String[] args) throws IOException {
        //方式一:建立文件
        //boolean createNewFile()
        File fe = new File("D:\\aaa\\a.txt");
        fe.createNewFile();
        //方式二,建立文件夾
        //boolean mkdir()
        File fe2 = new File("D:\\aaa","aa");
        fe2.mkdir();
        //方式三, 建立文件夾們,若是父文件夾不存在就建立
        //boolean mkdirs()
        File fe3 = new File("D:\\aaa");
        File fe4 = new File(fe3,"aa\\a");
        fe4.mkdirs();
        //注意若是沒有寫盤符,默認爲項目路徑
        File fe5 = new File("a.txt");
        fe5.createNewFile();
        
        //若是用方式一建立時,若是父目錄不存在,會出現"系統找不到指定的路徑"的錯誤
        //若是用方式二建立時,若是父目錄不存在,返回false
        //若是用方式三建立時,若是父目錄不存在,就建立上級目錄
    }
}
1.0

c:刪除方法ide

package d8;

import java.io.File;
import java.io.IOException;

public class FileDelete {
    public static void main(String[] args) throws IOException {
        //方式一:建立文件
        //boolean createNewFile()
        File fe = new File("D:\\aaa\\a.txt");
        fe.createNewFile();
        fe.delete();
         
        
        File fe2 = new File("D:\\aaa");
        System.out.println(fe2.delete());
        //--------false---------//
         
        
        //注意:刪除不走回收站
        //若是是刪除目錄,則該目錄必須爲空才能刪除
        
    }
}
1.0
package d8;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Filedelete2 {
    public static void main(String[] args) throws IOException {
        //獲取F盤全部的.exe文件
         
        File fe = new File("D:\\aaa");
        deleteAllFile(fe);
         /* */
    }
    public static void deleteAllFile(File fe) {
        if( fe.isFile()|| fe==null ) {
            System.out.println(fe.getPath());
            fe.delete();
            
        }else if(fe.isDirectory()&& fe.list().length<1){
            System.out.println(fe.getPath());
            fe.delete();             
        }else {
            File [] files = fe.listFiles();
            if (files!=null) {
                for (File file : files) {
                    deleteAllFile(file);
                }
                deleteAllFile(fe);
            }
            
        }
        
    }
}
/*D:\aaa\a.txt
D:\aaa\aa\a
D:\aaa\aa
D:\aaa\b.txt
D:\aaa\d.txt
D:\aaa*/
2.0級聯刪除

d:修改方法測試

package d8;

import java.io.File;
import java.io.IOException;

public class FileRenameTo {
    public static void main(String[] args) throws IOException {
        //方式一:路徑相同重命名    
        File fe = new File("D:\\aaa\\a.txt");
        fe.createNewFile();
        File f2 = new File("D:\\aaa\\b.txt");
        fe.renameTo(f2);
        
        //方式二:路徑不一樣,至關於剪切功能
        File fe3 = new File("a.txt");//默認路徑,也就是項目路徑
        fe3.createNewFile();
        File f4 = new File("D:\\aaa\\d.txt");
        fe3.renameTo(f4);
        
        //方式一:路徑相同重命名    
        //方式二:路徑不一樣,至關於剪切功能
        
    }
}
1.0

 e:判斷功能ui

package d8;

import java.io.File;
import java.io.IOException;

public class FileJudge {
    public static void main(String[] args) throws IOException {

        File fe = new File("D:\\aaa\\a.txt");

        boolean existsB = fe.exists();// 判斷文件是不是存在
        boolean isFileB = fe.isFile();// 判斷文件是不是一個標準文件
        boolean isDirectoryB = fe.isDirectory();// 判斷文件是不是一個目錄
        boolean isHiddenB = fe.isHidden();// 判斷文件是不是隱藏
        boolean canReadB = fe.canRead();// 判斷文件是否可讀
        boolean canWriteB = fe.canWrite();// 判斷文件是不是可寫

        System.out.println(existsB);        //---true---/
        System.out.println(isFileB);        //---true---/
        System.out.println(isDirectoryB);    //---false---/
        System.out.println(isHiddenB);        //---false---/
        System.out.println(canReadB);        //---true---/
        System.out.println(canWriteB);        //---true---/
        
    }
}
1.0

 f:獲取功能this

package d8;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileGet {
    public static void main(String[] args) throws IOException {

        File fe = new File("D:\\aaa\\a.txt");

        String strAbsolutePath = fe.getAbsolutePath();// 獲取文件絕對路徑
        String strPath = fe.getPath();// 獲取文件路徑
        String strName = fe.getName();// 獲取文件名
        Long length = fe.length();// 獲取文件大小
        Long strLastModified = fe.lastModified();// 獲取文件最後的修改時間
        Date d = new Date(strLastModified);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String s = sdf.format(d);
        System.out.println(strAbsolutePath); // ---D:\aaa\a.txt----/
        System.out.println(strPath); // ---D:\aaa\a.txt----/
        System.out.println(strName); // ---a.txt-----/
        System.out.println(length); // ---12-----/
        System.out.println(strLastModified); // ---1517184516189---/
        System.out.println(s); // ---2018-01-29 20:10:41----/

    }
}
1.0
package d8;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileGet2 {
    public static void main(String[] args) throws IOException {

        File fe = new File("D:\\");

         String [] nameArray = fe.list();
         for (String s : nameArray) {
            System.out.println(s);
        }
         
         File [] fileArray = fe.listFiles();
         for (File f : fileArray) {
            System.out.println(f.getName());
        }
         
         /*
$RECYCLE.BIN
00002109030000000000000000F01FEC.reg
aaa
API文檔
BaiduNetdiskDownload
Config.Msi
Develop
java(1)
JavaWorkspace
LuceneNet測試文件
midnds
MyDrivers
pagefile.sys
Program Files
Program Files (x86)
StormMedia
System Volume Information
Unity3D5.0
Users
博客資料
迅雷下載
黑馬JavaEE32*/
    }
}
2.0
package d8;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileTest {
    public static void main(String[] args) throws IOException {
        //找出D盤下全部以.reg結尾的文件
        File fe = new File("D:\\");
        
        //方法一:取出全部文件而後篩選
        File [] files = fe.listFiles();
        for (File f : files) {
            if (f.isFile()&&f.getName().endsWith(".reg")) {
                System.out.println(f.getName());
            }
        }
        //-----------00002109030000000000000000F01FEC.reg----------//
      
        
        //方法二: 經過過濾器先過濾一下 listFiles(FileFilter filter) 
        File [] files2 = fe.listFiles(new FileFilter() {            
            @Override
            public boolean accept(File pathname) {
                // TODO Auto-generated method stub
                return pathname.isFile()&&pathname.getName().endsWith(".reg");
            }
        });
        for (File f : files2) { 
                System.out.println(f.getName()); 
        }
        //-----------00002109030000000000000000F01FEC.reg----------//
        
        //方法三:方法二可能消耗的資源有點大 list(FilenameFilter filter) 
        String [] files3 =  fe.list(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                if (name.endsWith(".reg")) {
                    File fnew = new File(dir, name);
                    return fnew.isFile();
                }
                return false;
            }
        });
        for (String f : files3) { 
                System.out.println(f); 
        }
        //-----------00002109030000000000000000F01FEC.reg----------//
    }
}
3.0

 遞歸獲取4.0編碼

 2.0 IOspa

 

2.1 InputStream3d

  2.1.1 FileInputStream

  a:構造方法  

package d8;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class FileInputStreamGouZao {
    public static void main(String[] args) throws FileNotFoundException {
        
        
        // 方式一:根據一個路徑獲得一個讀取數據的寫入文件流對象
        // FileOutputStream(String name)
        FileInputStream fos = new FileInputStream("D:\\aaa\\a.txt");

        // 方式二,經過File對象 獲得一個讀取數據的寫入文件流對象
        // FileOutputStream(File file)
        File fe = new File("D:\\aaa", "a.txt");
        FileInputStream fos2 = new FileInputStream(fe);

         
    }
}
1.0

  b:讀取方法

package d8;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputStreamRead {
    public static void main(String[] args) throws IOException {
 
        // 方式一:
        // read()  今後輸入流中讀取一個數據字節。

        FileInputStream fis = new FileInputStream("D:\\aaa\\a.txt");
        int b = 0;
        while((b=fis.read())!=-1) {
            System.out.println((char)b);
        } 
        fis.close();
        

        // 方式二
        //read(byte[] b) 今後輸入流中將最多 b.length 個字節的數據讀入一個 byte 數組中。
        FileInputStream fis2 = new FileInputStream("D:\\aaa\\a.txt");
        byte[] bs = new byte[5];      
        while(( fis2.read(bs))!=-1) {
            System.out.println(new String(bs));
        } 
        fis2.close();
         

        // read(byte[] b, int off, int len)
        // 今後輸入流中將最多 len 個字節的數據讀入一個 byte 數組中。
        FileInputStream fis3 = new FileInputStream("D:\\aaa\\a.txt");
        byte[] bs2 = new byte[5];    
        int len = 0;
        while(( len = fis3.read(bs2))!=-1) {
            System.out.println(new String(bs2,0,len));
        } 
        fis3.close();
    }
}
/* 方式一
H
e
l
l
o




W
o
r
l
d
 




j
a
v
a    */

/* 方式二

Hello

Wor
ld 

java 

va 
*/
/* 方式三
Hello

Wor
ld 

java 
*/
1.0

  2.1.2 BufferedInputStream

 a:構造方法

package d8;

 
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class BufferedInputStreamGouZao {
    public static void main(String[] args) throws IOException   {
         
        // 方式一:根據一個路徑獲得一個寫入數據的輸出文件流對象
        //BufferedInputStream(InputStream out) 
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream("D:\\aaa\\a.txt"));

        // 方式二,經過Buffered對象 獲得一個寫入數據的輸出文件流對象
        // BufferedInputStream(InputStream out, int size) 
        BufferedInputStream fis2 = new BufferedInputStream(new FileInputStream("D:\\aaa\\a.txt"),1024);

    }
}
1.0

b:讀取方法

package d8;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamReade{
    public static void main(String[] args) throws IOException {

        // 方式一
        // read(int b) 將指定字節寫入此文件輸出流。
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream("D:\\aaa\\a.txt"));
         int b =0;
         while ((b=fis.read())!=-1) {
             System.out.println(b);
        }
         /*
97
32
119
111*/

        // read(byte[] b, int off, int len)
        // 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此文件輸出流。
        BufferedInputStream fis2 = new BufferedInputStream(new FileInputStream("D:\\aaa\\a.txt"), 1024);
         byte [] by = new byte[5];
         int len =0;
         while ((len = fis2.read(by,0,2))!=-1) {
             System.out.println(new String(by,0,len));
        }
         
         //------------a -----------//
        //------------wo-----------//
    }
}    
1.0

 

2.2 OutPutStream

  2.2.1 FileOutputStream

  a:構造方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class FileOutputStreamGouZao {
    public static void main(String[] args) throws FileNotFoundException {
        
        //建立字節輸出流對象作了3件事情
        //01 調用系統功能建立文件
        //02 建立fos對象
        //03 將字節輸出流對象指向對應的文件

        // 方式一:根據一個路徑獲得一個寫入數據的輸出文件流對象
        // FileOutputStream(String name)
        FileOutputStream fos = new FileOutputStream("D:\\aaa\\a.txt");

        // 方式二,經過File對象 獲得一個寫入數據的輸出文件流對象
        // FileOutputStream(File file)
        File fe = new File("D:\\aaa", "a.txt");
        FileOutputStream fos2 = new FileOutputStream(fe);

        // 方式三:根據一個路徑獲得一個寫入數據的輸出文件流對象,如爲 true,則將字節寫入文件末尾處
        // FileOutputStream(String name,boolean append)
        FileOutputStream fos3 = new FileOutputStream("D:\\aaa\\a.txt", true);

        // 方式四,經過File對象 獲得一個寫入數據的輸出文件流對象,如爲 true,則將字節寫入文件末尾處
        // FileOutputStream((File file,boolean append)
        File fe2 = new File("D:\\aaa", "a.txt");
        FileOutputStream fos4 = new FileOutputStream(fe2, true);
    }
}
1.0

  b:寫入方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamWrite {
    public static void main(String[] args) throws IOException {

        // 建立字節輸出流對象作了3件事情
        // 01 調用系統功能建立文件
        // 02 建立fos對象
        // 03 將字節輸出流對象指向對應的文件

        // close()方法的做用
        // 1:讓流對象變成垃圾,方便被垃圾回收站回收
        // 2:通知系統去釋放掉該文件相關的資源

        // 方式一:
        // write(byte[] b) 根據一個路徑將指定 byte 數組寫入此文件輸出流中

        FileOutputStream fos = new FileOutputStream("D:\\aaa\\a.txt");
        fos.write("Hello World !".getBytes());
        fos.close();
        // -------Hello World !---------//

        // 方式二
        // write(int b) 將指定字節寫入此文件輸出流。
        FileOutputStream fos2 = new FileOutputStream("D:\\aaa\\b.txt");
        fos2.write(97);
        fos2.close();
        // -------a---------//

        // write(byte[] b, int off, int len)
        // 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此文件輸出流。
        FileOutputStream fos3 = new FileOutputStream("D:\\aaa\\c.txt");
        fos3.write("Hello World !".getBytes(), 0, 5);
        fos3.close();
        // -------Hello---------//
    }
}
1.0
package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamWrite2 {
    public static void main(String[] args) throws IOException {

        // 建立字節輸出流對象作了3件事情
        // 01 調用系統功能建立文件
        // 02 建立fos對象
        // 03 將字節輸出流對象指向對應的文件

         
        // 方式一:
        // write(byte[] b) 根據一個路徑將指定 byte 數組寫入此文件輸出流中

        FileOutputStream fos = new FileOutputStream("D:\\aaa\\a.txt",true);
        fos.write('\r');
        fos.write('\n');
        fos.write("Hello World !".getBytes());
        fos.close();
        //-------Hello World !---------//
        //--------Hello World ! ---------//
        // 方式二
        // write(int b) 將指定字節寫入此文件輸出流。
        File fe2 = new File("D:\\aaa", "b.txt");
        FileOutputStream fos2 = new FileOutputStream(fe2, true);
         
        fos2.write(97);
        fos2.close();
        //-------aa---------//
        
     
    }
}
2.0

  2.2.2 BufferedOutputStream

  a:構造方法

package d8;

 
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedOutputStreamGouZao {
    public static void main(String[] args) throws IOException   {
         
        // 方式一:根據一個路徑獲得一個寫入數據的輸出文件流對象
        //BufferedOutputStream(OutputStream out) 
        BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream("D:\\aaa\\a.txt"));

        // 方式二,經過Buffered對象 獲得一個寫入數據的輸出文件流對象
        // BufferedOutputStream(OutputStream out, int size) 
        BufferedOutputStream fos2 = new BufferedOutputStream(new FileOutputStream("D:\\aaa\\a.txt"),1024);

    }
}
1.0

  b:寫入方法

package d8;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedOutputStreamWrite {
    public static void main(String[] args) throws IOException {

        // 方式一
        // write(int b) 將指定字節寫入此文件輸出流。
        BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream("D:\\aaa\\a.txt"));
        fos.write(97);
        fos.close();
        // -------a---------//

        // write(byte[] b, int off, int len)
        // 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此文件輸出流。
        BufferedOutputStream fos2 = new BufferedOutputStream(new FileOutputStream("D:\\aaa\\a.txt",true), 1024);
        fos2.write("hello world java".getBytes(), 5, 3);
        fos2.close();
         //------------a wo-----------//
    }
}
1.0

 練習:4鍾操做的複製文件

package d8;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class CopyTest {
    public static void main(String[] args) throws IOException {
        Long start = System.currentTimeMillis();
        method1();
        Long end = System.currentTimeMillis();
        System.out.println("方法一:耗時"+(end-start));
        Long start2 = System.currentTimeMillis();
        method2();
        Long end2 = System.currentTimeMillis();
        System.out.println("方法二:耗時"+(end2-start2));
        
        Long start3 = System.currentTimeMillis();
        method3();
        Long end3 = System.currentTimeMillis();
        System.out.println("方法三:耗時"+(end3-start3));
        
        Long start4 = System.currentTimeMillis();
        method4();
        Long end4 = System.currentTimeMillis();
        System.out.println("方法四:耗時"+(end4-start4));
    }

    private static void method4() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\aaa\\a.avi"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\aaa\\a4.avi"));
        byte [] by = new byte[1024];
        int len =0;
        while ((len=bis.read(by))!=-1) {
            bos.write(by,0,len);
            bos.flush();
        } 
        bis.close();
        bos.close();
    }
    //高效字節流,一次讀寫一個字節
    private static void method3() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\aaa\\a.avi"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\aaa\\a3.avi"));
        int b =0;
        while ((b=bis.read())!=-1) {
            bos.write(b);
        }
        bis.close();
        bos.close();
    }
    //基本字節流,一次讀寫一個數組長度
    private static void method2() throws IOException {
        FileInputStream fi2 = new FileInputStream("D:\\aaa\\a.avi");
        FileOutputStream fo2 = new FileOutputStream("D:\\aaa\\a2.avi");
        byte [] by = new byte[1024];
        int len =0;
        while ((len=fi2.read(by))!=-1) {
            fo2.write(by,0,len);
        } 
        fi2.close();
        fo2.close();
    }
    
    //基本字節流,一次讀寫一個字節
    private static void method1() throws IOException {
        FileInputStream fi = new FileInputStream("D:\\aaa\\a.avi");
        FileOutputStream fo = new FileOutputStream("D:\\aaa\\a1.avi");
        int b =0;
        while ((b=fi.read())!=-1) {
            fo.write(b);
        } 
        fi.close();
        fo.close();
    }
}
/*
 方法一:耗時243369
方法二:耗時302
方法三:耗時416
方法四:耗時270
*/
1.0

字符流 = 字節流+編碼表 

3.1 Reader

  3.1.1 InputStreamReader

  a:構造方法  

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class InputStreamReaderGouZao {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 字符輸入流:字節輸入流+編碼

        // 方式一:根據一個字節輸入流 + 默認編碼 獲得一個字符輸入對象
        // InputStreamReader(InputStream In)
        InputStreamReader isw = new InputStreamReader(new FileInputStream("D:\\aaa\\a.txt"));

        // 方式二:根據一個字節輸入流 + 指定編碼 獲得一個字符輸入對象
        // InputStreamReader(InputStream In, String charsetName)
        InputStreamReader isw2 = new InputStreamReader(new FileInputStream("D:\\aaa\\a.txt"), "utf-8");

    }
}
1.0

  b:read方法 

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class InputStreamReaderRead {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 字符輸入流:字節輸入流+編碼

        // 方式一:根據一個字節輸入流 + 默認編碼 獲得一個字符輸入對象
        // InputStreamReader(InputStream In)
        InputStreamReader osw = new InputStreamReader(new FileInputStream("D:\\aaa\\b.txt"));

        int b = 0;
        while ((b=osw.read())!=-1) {
            System.out.print((char)b);
        }
        // 方式二:根據一個字節輸入流 + 指定編碼 獲得一個字符輸入對象
        // InputStreamReader(InputStream In, String charsetName)
        InputStreamReader osw2 = new InputStreamReader(new FileInputStream("D:\\aaa\\b.txt"), "utf-8");
        char [] by =new char[5];
        int len=0;
        while ((len=osw2.read(by, 0, 3))!=-1) {
            System.out.println(new String(by,0,len));
        }
    }
}
/*浣犲ソ涓栫晫你好世
界*/
1.0

3.1.2 FileReader

 a:構造方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileReader;
import java.io.UnsupportedEncodingException;

public class FileReaderGouZao {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 方式一:根據一個字節輸入流 + 默認編碼 獲得一個字符輸入對象
        // FileReader(File file)
        FileReader isw = new FileReader("D:\\aaa\\a.txt");

        // 方式二:在給定從中讀取數據的文件名的狀況下建立一個新 FileReader。
        // FileReader( String fileName)
        FileReader isw2 = new FileReader(new File("D:\\aaa\\a.txt"));

    }
}
1.0

b:read方法 

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class FileReaderRead {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 方式一:根據一個字節輸入流 + 默認編碼 獲得一個字符輸入對象
        // FileReader(File file)
        FileReader fr = new FileReader("D:\\aaa\\a.txt");
        int b = 0;
        while ((b = fr.read()) != -1) {
            System.out.print((char) b);
        }

        // 方式二:在給定從中讀取數據的文件名的狀況下建立一個新 FileReader。
        // FileReader( String fileName)
        FileReader fr2 = new FileReader(new File("D:\\aaa\\a.txt"));
        char[] by = new char[5];
        int len = 0;
        while ((len = fr2.read(by, 0, 3)) != -1) {
            System.out.println(new String(by, 0, len));
        }
    }
}
/*
 * aaabcdefaaa
bcd
ef
 */
1.0

3.1.3 BufferedReader

 a:構造方法

package d8;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderGouZao {
    public static void main(String[] args) throws  IOException {

        // 方式一:根據一個字節輸入流 + 默認編碼 獲得一個字符輸入對象
        // BufferedReader(Reader in)
        BufferedReader br = new BufferedReader(new FileReader("D:\\aaa\\a.txt"));

        // 方式二:BufferedReader(Reader in, int sz) 
        // 建立一個使用指定大小輸入緩衝區的緩衝字符輸入流。
        BufferedReader br2 = new BufferedReader(new FileReader("D:\\aaa\\a.txt"),1024);

    }
}
1.0

 b:read方法 

package d8;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class BufferedReaderRead {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 方式一:BufferedReader(Reader in)
        // 建立一個使用指定大小輸入緩衝區的緩衝字符輸入流。
        BufferedReader br = new BufferedReader(new FileReader("D:\\aaa\\a.txt"));
        int b = 0;
        while ((b = br.read()) != -1) {
            System.out.print((char) b);
        }

        // 方式二:BufferedReader(Reader in, int sz)
        // 建立一個使用指定大小輸入緩衝區的緩衝字符輸入流。
        BufferedReader br2 = new BufferedReader(new FileReader("D:\\aaa\\a.txt"), 1024);
        char[] by = new char[5];
        int len = 0;
        while ((len = br2.read(by, 0, 3)) != -1) {
            System.out.println(new String(by, 0, len));
        }
    }
}
/*
 * aaaa
 */
1.0

 2.0 寫入一個文本行

3.2 Writer

  3.2.1 OutputStreamWriter

 

 a:構造方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class OutputStreamWriterGouZao {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 字符輸出流:字節輸出流+編碼

        // 方式一:根據一個字節輸出流 + 默認編碼 獲得一個字符輸出對象
        // OutputStreamWriter(OutputStream out)
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\a.txt"));

        // 方式二:根據一個字節輸出流 + 指定編碼 獲得一個字符輸出對象
        // OutputStreamWriter(OutputStream out, String charsetName)
        OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\a.txt"), "utf-8");

    }
}
1.0

b: Write方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class OutputStreamWriterWrite {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 方式一: 寫入單個字符 write(int c)
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\a.txt"));
        osw.write(97);
        osw.write('a');
        osw.close();

        // 方式二:寫入字符數組。 write(char[] cbuf)
        OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\b.txt"), "utf-8");
        char[] che = { 'a', 'b', 'c', 'd', 'e', 'f' };
        osw2.write(che);
        osw2.flush();
        osw2.close();

        // 方式三:寫入字符數組的某一部分。 write(char[] cbuf, int off, int len)
        OutputStreamWriter osw3 = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\c.txt"));
        char[] che2 = { 'a', 'b', 'c', 'd', 'e', 'f' };
        osw3.write(che2, 2, 3);
        osw3.write("Hello world".toCharArray());
        
        osw3.close();

        // 方式四: 寫入字符串 。 write(String str)
        OutputStreamWriter osw4 = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\d.txt"), "utf-8");
        String str = "Hello World Java";
        osw4.write(str);
        osw4.flush();
        osw4.close();

        // 方式五: 寫入字符串的某一部分。 write(String str, int off, int len)
        OutputStreamWriter osw5 = new OutputStreamWriter(new FileOutputStream("D:\\aaa\\e.txt"), "utf-8");
        String str2 = "Hello World Java";
        osw5.write(str2,3,4);
        osw5.flush();
        osw5.close();
    }
}

/*
 * aa
 * abcdef
 * cdeHello world
 * Hello World Java
 * lo W
 */
1.0

 3.2.2 FileWriter

 a:構造方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;

import java.io.IOException;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;

public class FileWriterGouZao {
    public static void main(String[] args) throws FileNotFoundException, IOException {
 
        // 方式一: 根據給定的文件名值來構造 FileWriter 對象
        // FileWriter(String fileName) 
        FileWriter fw = new FileWriter("D:\\aaa\\a.txt");

        // 方式二: 根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象
        // FileWriter(String fileName, boolean append) 
        FileWriter fw2 = new FileWriter(("D:\\aaa\\a.txt"),true);
        

        // 方式三: 根據給定的文件名值來構造 FileWriter 對象
        // FileWriter(File file) 
        FileWriter fw3 = new FileWriter(new File("D:\\aaa\\a.txt") );

        // 方式四: 根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象
        //FileWriter(File file, boolean append) 
        FileWriter fw4 = new FileWriter(new File("D:\\aaa","a.txt"),true);

    }
}
1.0

b: Write方法

package d8;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class FileWriterWrite {
    public static void main(String[] args) throws FileNotFoundException, IOException {

        // 方式一: 根據給定的文件名值來構造 FileWriter 對象
        // FileWriter(String fileName)
        FileWriter fw = new FileWriter("D:\\aaa\\a.txt");
        // 方式一: 寫入單個字符 write(int c)
        fw.write(97);
        fw.write('a');
        fw.close();
        
        
        // 方式二: 根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象
        // FileWriter(String fileName, boolean append)
        FileWriter fw2 = new FileWriter(("D:\\aaa\\a.txt"), true);
        // 方式二:寫入字符數組。 write(char[] cbuf)
        char[] che = { 'a', 'b', 'c', 'd', 'e', 'f' };
        fw2.write(che);
        fw2.flush();
        fw2.close();
        

        
        // 方式三: 根據給定的文件名值來構造 FileWriter 對象
        // FileWriter(File file)
        FileWriter fw3 = new FileWriter(new File("D:\\aaa\\b.txt"));
        // 方式三:寫入字符數組的某一部分。 write(char[] cbuf, int off, int len)
        char[] che2 = { 'a', 'b', 'c', 'd', 'e', 'f' };
        fw3.write(che2, 2, 3);
        fw3.close();
        

        // 方式四: 根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象
        // FileWriter(File file, boolean append)
        FileWriter fw4 = new FileWriter(new File("D:\\aaa", "b.txt"), true); 
        // 方式四: 寫入字符串 。 write(String str)         
        String str = "Hello World Java";
        fw4.write(str);
        fw4.flush();
        fw4.close();
        

        // 方式一: 根據給定的文件名值來構造 FileWriter 對象
        // FileWriter(String fileName)
        FileWriter fw5 = new FileWriter("D:\\aaa\\c.txt");
        // 方式五: 寫入字符串的某一部分。 write(String str, int off, int len)
        String str2 = "Hello World Java";
        fw5.write(str2, 3, 4);
        fw5.flush();
        fw5.close();
    }
}

/*
 *aaabcdef
 *cdeHello World Java
 *lo W
 */
1.0

 3.2.3 BufferedWwriter

 

 a:構造方法

package d8;


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriterGouZao {
    public static void main(String[] args) throws  IOException {
 
        // 方式一:  建立一個使用默認大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out) 
        BufferedWriter bw = new BufferedWriter( new FileWriter("D:\\aaa\\a.txt"));

        // 方式二:  建立一個使用給定大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out, int sz)  
        BufferedWriter bw2 = new BufferedWriter( new FileWriter("D:\\aaa\\a.txt"),1024);
         
    }
}
1.0

b: Write方法

package d8;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class BufferedWriterWrite {
    public static void main(String[] args) throws FileNotFoundException, IOException {


        // 方式一:  建立一個使用默認大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out) 
        BufferedWriter bw = new BufferedWriter( new FileWriter("D:\\aaa\\a.txt"));
        // 方式一: 寫入單個字符 write(int c)
        bw.write(97);
        bw.write('a');
        bw.close();
                
                
        // 方式二:  建立一個使用給定大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out, int sz)  
        BufferedWriter bw2 = new BufferedWriter( new FileWriter("D:\\aaa\\b.txt"),1024);
        // 方式二:寫入字符數組。 write(char[] cbuf)
        char[] che = { 'a', 'b', 'c', 'd', 'e', 'f' };
        bw2.write(che);
        bw2.flush();
        bw2.close();

        // 方式一:  建立一個使用默認大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out) 
        BufferedWriter bw3 = new BufferedWriter( new FileWriter("D:\\aaa\\c.txt"));
        // 方式三:寫入字符數組的某一部分。 write(char[] cbuf, int off, int len)
        char[] che2 = { 'a', 'b', 'c', 'd', 'e', 'f' };
        bw3.write(che2, 2, 3);
        bw3.close();
        

        // 方式一:  建立一個使用默認大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out) 
        BufferedWriter bw4 = new BufferedWriter( new FileWriter("D:\\aaa\\d.txt"));
        // 方式四: 寫入字符串 。 write(String str)         
        String str = "Hello World Java";
        bw4.write(str);
        bw4.flush();
        bw4.close();
        

        // 方式一:  建立一個使用默認大小輸出緩衝區的新緩衝字符輸出流。
        // BufferedWriter(Writer out) 
        BufferedWriter bw5 = new BufferedWriter( new FileWriter("D:\\aaa\\e.txt"));
        // 方式五: 寫入字符串的某一部分。 write(String str, int off, int len)
        String str2 = "Hello World Java";
        bw5.write(str2, 3, 4);
        bw5.flush();
        bw5.close();
    }
}

/*
 *aa
 *abcdef
 *cde
 *Hello World Java
 *lo W
 */
1.0

 2.0 寫入一個行分隔符

 3.3 練習

練習1:5中方法複製文本文件

package d8;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyTxt {

    public static void main(String[] args) throws IOException {
        Long start = System.currentTimeMillis();
        method1();
        Long end = System.currentTimeMillis();
        System.out.println("方法一:耗時"+(end-start));
        Long start2 = System.currentTimeMillis();
        method2();
        Long end2 = System.currentTimeMillis();
        System.out.println("方法二:耗時"+(end2-start2));
        
        Long start3 = System.currentTimeMillis();
        method3();
        Long end3 = System.currentTimeMillis();
        System.out.println("方法三:耗時"+(end3-start3));
        
        Long start4 = System.currentTimeMillis();
        method4();
        Long end4 = System.currentTimeMillis();
        System.out.println("方法四:耗時"+(end4-start4));
        
        Long start5 = System.currentTimeMillis();
        method5();
        Long end5 = System.currentTimeMillis();
        System.out.println("方法五:耗時"+(end5-start5));

    }

    private static void method5() throws IOException {
        // Buffered 一次讀取一個字符數組
        FileReader fr = new FileReader("D:\\aaa\\a.txt");
        FileWriter fw = new FileWriter("D:\\aaa\\b.txt", true);
        BufferedReader br = new BufferedReader(fr);
        BufferedWriter bw = new BufferedWriter(fw);

        bw.write("--方法五,FileXXX 開始");
        bw.newLine();
        String line;
        while ((line = br.readLine()) != null) {
            bw.write(line);;
        }
        bw.newLine();
        bw.write("--方法五,FileXXX 結束");
        bw.newLine();
        // 釋放資源
        br.close();
        bw.close();
    }

    private static void method4() throws IOException {
        // Buffered 一次讀取一個字符數組
        FileReader fr = new FileReader("D:\\aaa\\a.txt");
        FileWriter fw = new FileWriter("D:\\aaa\\b.txt", true);
        BufferedReader br = new BufferedReader(fr);
        BufferedWriter bw = new BufferedWriter(fw);

        bw.write("--方法四,FileXXX 開始");
        bw.newLine();
        int len = 0;
        char[] ch = new char[5];
        while ((len = br.read(ch)) != -1) {
            bw.write(ch, 0, len);
        }
        bw.newLine();
        bw.write("--方法四,FileXXX 結束");
        bw.newLine();
        // 釋放資源
        br.close();
        bw.close();
    }

    private static void method3() throws IOException {
        // Buffered 一次讀取一個字符
        FileReader fr = new FileReader("D:\\aaa\\a.txt");
        FileWriter fw = new FileWriter("D:\\aaa\\b.txt", true);
        BufferedReader br = new BufferedReader(fr);
        BufferedWriter bw = new BufferedWriter(fw);

        bw.write("--方法三,FileXXX 開始");
        bw.newLine();
        int i = 0;
        while ((i = br.read()) != -1) {
            bw.write((i));
        }
        bw.newLine();
        bw.write("--方法三,FileXXX 結束");
        bw.newLine();
        // 釋放資源
        br.close();
        bw.close();
    }

    private static void method2() throws IOException {
        // File 一次讀取一個字符數組
        FileReader fr = new FileReader("D:\\aaa\\a.txt");
        FileWriter fw = new FileWriter("D:\\aaa\\b.txt", true);
        fw.write("--方法二,FileXXX 開始");
        fw.write("\r\n");
        int len = 0;
        char[] ch = new char[5];
        while ((len = fr.read(ch)) != -1) {
            fw.write(ch, 0, len);
        }
        fw.write("\r\n");
        fw.write("--方法二,FileXXX 結束");
        fw.write("\r\n");
        // 釋放資源
        fr.close();
        fw.close();
    }

    private static void method1() throws IOException {
        // File 一次讀取一個字符
        FileReader fr = new FileReader("D:\\aaa\\a.txt");
        FileWriter fw = new FileWriter("D:\\aaa\\b.txt");
        fw.write("--方法一,FileXXX 開始");
        fw.write("\r\n");
        int i = 0;
        while ((i = fr.read()) != -1) {
            fw.write((i));
        }
        fw.write("\r\n");
        fw.write("--方法一,FileXXX 結束");
        fw.write("\r\n");
        // 釋放資源
        fr.close();
        fw.close();

    }
/*
 * 方法一:耗時3
方法二:耗時2
方法三:耗時2
方法四:耗時1
方法五:耗時1

*
*
*
*--方法一,FileXXX 開始
aa
bb
cc
dd
ee
ff
gg
--方法一,FileXXX 結束
--方法二,FileXXX 開始
aa
bb
cc
dd
ee
ff
gg
--方法二,FileXXX 結束
--方法三,FileXXX 開始
aa
bb
cc
dd
ee
ff
gg
--方法三,FileXXX 結束
--方法四,FileXXX 開始
aa
bb
cc
dd
ee
ff
gg
--方法四,FileXXX 結束
--方法五,FileXXX 開始
aabbccddeeffgg
--方法五,FileXXX 結束
*/
}
1.0

 4:綜合練習

1:複製單級文件夾

package d8;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopySingeFolder {
    public static void main(String[] args) throws IOException {
        // 需求:將單層文件夾例如:aaa文件下內容(只有文件)複製到bbb文件

        // 根據文件路徑獲取文件集合
        File srcFolder = new File("D:\\aaa");// 源文件
        File destFolder = new File("D:\\bbb");// 目標文件

        // 若是目標路徑不存在,就建立,若是存在,就清空
        if (destFolder.exists()) {
            //清空文件夾
            clearFolder(destFolder);
        }
        destFolder.mkdir();
        // 獲取源文件夾中的文件
        CopyFolder(srcFolder,destFolder);
        
        
    }

    //複製文件
    private static void CopyFolder(File srcFolder, File destFolder) throws IOException {
        File[] srcFiles = srcFolder.listFiles();
        if (srcFiles.length > 0) {            
            for (File file : srcFiles) {
                CopyFile(file,destFolder);
            }
        }
    }

     

    private static void CopyFile(File file, File destFolder) throws IOException {
        BufferedInputStream bis= new BufferedInputStream(new FileInputStream(file));
        String destName = file.getName();
        BufferedOutputStream bos= new BufferedOutputStream(new FileOutputStream(new File(destFolder,destName)));
        int len=0;
        byte [] by=new byte[1024];
        while ((len=bis.read(by))!=-1) {
            bos.write(by,0,len);
        }
        bos.close();
        bis.close();
    }

    //清空目標文件夾
    private static void clearFolder(File destFolder) {
        // TODO Auto-generated method stub
        File [] destFiles =destFolder.listFiles();
        if (destFiles!=null&&destFiles.length>0) {
            for (File file : destFiles) {
                file.delete();
            }
        }
        destFolder.delete();
    }
 
}
1.0

 2:複製文件

package d8;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyMultistageFolder {
    public static void main(String[] args) throws IOException {
        // 需求:文件夾複製

        // 根據文件路徑獲取文件集合
        File srcFolder = new File("D:\\aaa");// 源文件
        File destFolder = new File("D:\\bbb");// 目標文件

        // 若是目標路徑不存在,就建立,若是存在,就清空
        if (destFolder.exists()) {
            //清空文件夾
            clearFolder(destFolder);
        }
        destFolder.mkdir();
        // 獲取源文件夾中的文件
        CopyFolder(srcFolder,destFolder);
        
        
    }

    //複製文件
    private static void CopyFolder(File srcFolder, File destFolder) throws IOException {
        File[] srcFiles = srcFolder.listFiles();
        if (srcFiles.length > 0) {            
            for (File file : srcFiles) {
                if (file.isFile()) {
                    CopyFile(file,destFolder);
                }
                else if (file.isDirectory()) {
                    //建立一個文件夾
                    File newFolder = new File(destFolder.getAbsolutePath(),file.getName());// 目標文件
                    newFolder.mkdir();
                    CopyFolder(file,newFolder);
                }
            }
        }
    }

     

    private static void CopyFile(File file, File destFolder) throws IOException {
        BufferedInputStream bis= new BufferedInputStream(new FileInputStream(file));
        String destName = file.getName();
        BufferedOutputStream bos= new BufferedOutputStream(new FileOutputStream(new File(destFolder,destName)));
        int len=0;
        byte [] by=new byte[1024];
        while ((len=bis.read(by))!=-1) {
            bos.write(by,0,len);
        }
        bos.close();
        bis.close();
    }

    //清空目標文件夾
    private static void clearFolder(File destFolder) {
        //級聯刪除
        if (destFolder.isFile()||destFolder == null ) {
            destFolder.delete();
        }else if(destFolder.isDirectory()&&destFolder.listFiles().length<1) {
            destFolder.delete();
        }else {
            File [] destFiles =destFolder.listFiles();
            if (destFiles!=null&&destFiles.length>0) {
                for (File file : destFiles) {
                    clearFolder(file);
                }
            }
            destFolder.delete();
        }
        
        
        destFolder.delete();
    }
 
}
1.0

 3:模擬BufferedReader的readLine()+ BufferedWriter的newLine()+LineNumberReader的getLineNumber()和setLineNumber()

package d8;

import java.io.IOException;
import java.io.Reader;

public class MyBufferedReader {
    private Reader r;

    public MyBufferedReader(Reader r) {
         this.r =r;
    }

    public String readLine() throws IOException {
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while ((i = r.read()) != -1) {
            if (i == '\r') {
                continue;
            } 
            if (i == '\n') {
                return sb.toString();
            }else {
                sb.append((char)i);
            }
        }
        if (sb.toString().length()>0) {
            return sb.toString();
        }
        return null;
    }

    // close方法
    public void close() throws IOException {
        r.close();
    }
}
MyBufferedReader
package d8;

import java.io.IOException;
import java.io.Writer;

public class MyBufferedWriter {
    //首先須要一個屬性Writer 
    private Writer w;
     //創建一個構造方法
    public MyBufferedWriter( Writer w) {
        this.w =w;
    }
    public void newLine () throws IOException {
        w.write('\r');
        w.write('\n');
    }
    public void write (String str) throws IOException {
        w.write(str);         
    }
    public void close() throws IOException {
        w.close();
    }
}

 
MyBufferedWriter
package d8;

import java.io.IOException;
import java.io.Reader;

public class MyLineNumberReader {
    private Reader r;
    private int lineNumber;
    public MyLineNumberReader(Reader r) {
         this.r =r;
    }

    public String readLine() throws IOException {
        lineNumber++;
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while ((i = r.read()) != -1) {
            if (i == '\r') {
                continue;
            } 
            if (i == '\n') {
                return sb.toString();
            }else {
                sb.append((char)i);
            }
        }
        if (sb.toString().length()>0) {
            return sb.toString();
        }
        return null;
    }

    public int getLineNumber() {
        return lineNumber;
    }

    public void setLineNumber(int lineNumber) {
        this.lineNumber = lineNumber;
    }

    // close方法
    public void close() throws IOException {
        r.close();
    }
}
MyLineNumberReader 1.0
package d8;

import java.io.IOException;
import java.io.Reader;

public class MyLineNumberReader2 extends MyLineNumberReader {

    private Reader r;
    private int lineNumber;
    public MyLineNumberReader2(Reader r) {
        super(r); 
    }
    public String readLine() throws IOException {
        lineNumber++;
        return super.readLine();
    }

    public int getLineNumber() {
        return lineNumber;
    }

    public void setLineNumber(int lineNumber) {
        this.lineNumber = lineNumber;
    }
}
MyLineNumberReader2
package d8;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MyBufferedTest {
     public static void main(String[] args) throws IOException {
        MyBufferedReader mbr = new MyBufferedReader(new FileReader("D:\\aaa\\a.txt"));
        MyBufferedWriter mbw = new MyBufferedWriter(new FileWriter("D:\\aaa\\b.txt"));
        String line = "";
        while ((line = mbr.readLine())!=null) {
            System.out.println(line);
            mbw.write(line);
            mbw.newLine();
            mbw.write("哈哈");
            mbw.newLine();
        }
        mbr.close();
        mbw.close();
        
        MyLineNumberReader mlnr = new MyLineNumberReader(new FileReader("D:\\aaa\\a.txt"));
        mlnr.setLineNumber(100);
        while ((line = mlnr.readLine())!=null) {
            System.out.println(mlnr.getLineNumber()+":"+line);
            }
        mlnr.close();
        
        MyLineNumberReader2 mlnr2 = new MyLineNumberReader2(new FileReader("D:\\aaa\\a.txt"));
        mlnr2.setLineNumber(10);
        while ((line = mlnr2.readLine())!=null) {
            System.out.println(mlnr2.getLineNumber()+":"+line);
            }
        mlnr2.close();
    }
}
MyBufferedTest
相關文章
相關標籤/搜索