Java基礎 使用轉換流進行文件的復制 / RandomAccessFile 類進行文件的復制


筆記:

 **使用轉換流進行文件的復制
  文本文件---字節流FileInputStream--> [InputStreamReader] -----字符流BufferedReader------>程序 * ------字符流BufferedWriter----->[OutputStreamWriter]-----字節流-FileOutputStream--->[ 輸出目的/ 文件] * 編碼: 字符串-->字節數組 * 解碼: 字節數組-->字符串
/** RandomAccessFile :支持隨機訪問
* 1.既可以充當一個輸入流,也可以充當一個輸出流 ; read(byte b[])/write()
* 2.支持從文件的任意位置的開頭進行讀取和寫入 ;
* raf.seek(long pos) //設置讀指針的地址;
* raf.writeBytes(String s);//將一個字符串 寫入文件,
* writeInt(int v);//寫入一個int數據
* 3.支持從任意位置的讀取和寫入(插入);
*/

 

代碼:

實驗4: 使用轉換流  進行文件的復制
   @Test //實驗4: 使用轉換流  進行文件的復制
    public void testTrans() throws IOException {

        //①聲明②將地址加載進字符流,將字符流加載進緩沖流③read/write④close緩沖流)
    // 解碼
        File src=new File("D:\\SZS文件夾\\IO\\hello.txt");
        FileInputStream fis= new FileInputStream(src);
        InputStreamReader isr=new InputStreamReader(fis,"GBK");
        BufferedReader br=new BufferedReader(isr);
    //編碼
        File dest=new File("D:\\SZS文件夾\\IO\\轉換流復制的hello.txt");
        FileOutputStream fos = new FileOutputStream(dest);
        OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");
        BufferedWriter bw=new BufferedWriter(osw);

        char[] b=new char[1024];
        int len;
        while((len=br.read(b))!= -1) {
            bw.write(b,0,len);
        }
        bw.flush();
        br.close();
        bw.close();
    }
}

使用 RandomAccessFile 類 進行進行文件的復制測試的代碼:

 
         
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class TestRandomAccessFile {
    //進行文件的讀/寫
    @Test              //使用RandomAccessFile 進行文件的復制
    public void test1() throws IOException {
        File src= new File("D:\\SZS文件夾\\IO\\hello.txt");
        File dest= new File("D:\\SZS文件夾\\IO\\RandomAccessFile_hello.txt");
        RandomAccessFile raf1=new RandomAccessFile(src,"r");
        RandomAccessFile raf2=new RandomAccessFile(dest,"rw");

        byte[] b = new byte[20];
        int len=0;
       while((len=raf1.read(b)) !=-1){
           raf2.write(b,0,len);
       }
       raf1.close();
       raf2.close();
    }

    @Test  //使用RandomAccessFile 的seek() 設置讀指針的位置 ,下面的栗子相當於忽略了前10個字符
    public void test2() throws IOException{
        File src= new File("D:\\SZS文件夾\\IO\\hello.txt");
        File dest= new File("D:\\SZS文件夾\\IO\\RandomAccessFile2_hello.txt");
        RandomAccessFile raf1=new RandomAccessFile(src,"r");
        RandomAccessFile raf2=new RandomAccessFile(dest,"rw");
        raf1.seek(10);  //設置讀指針的位置
        byte[] b = new byte[20];
        int len=0;
        while((len=raf1.read(b)) !=-1){
            raf2.write(b,0,len);
        }
        raf1.close();
        raf2.close();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM