筆記:
**使用轉換流進行文件的復制
文本文件---字節流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(); } }