天天看點

Java OutputStream寫入檔案與檔案複制3. 檔案複制示例

1. 知識點

1,首先不管是InputStream讀read,還是OutputStream寫write,都支援讀寫一定長度的byte[]。

2,當然,還支援一個位元組一個位元組的讀寫,那麼一個位元組一個位元組的讀寫,讀出來的位元組和寫入的位元組都是用的int類型的參數。

3,int參數隻會使用它的8個二進制位,也就是說類似于将int強行轉換為byte,我感覺很無聊的設計,還不如直接用byte作為參數,這樣搞是因為int太火嗎?

4,是以所謂的複制,就是把所有的位元組讀出來,然後寫入檔案即可。

2. 寫入檔案示例

寫入對象FILE_FOR_WRITE中

Java OutputStream寫入檔案與檔案複制3. 檔案複制示例
寫入過程

package com.maoge.stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class OutputStreamDemo {
    public static void main(String[] args){
        writeToFile();
    }
    public static void writeToFile(){
        byte buffer[]=buffer=new String("hello world!").getBytes();
        OutputStream out=null;
        try {
            out = new FileOutputStream(StreamUtils.FILE_FOR_WRITE);
            out.write(buffer, 0, buffer.length);
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }finally{
            try {
                out.close();
            } catch (IOException ioEx) {
                System.out.println(ioEx.toString());
            }
        }   
    }
}
      

3. 檔案複制示例

直接示範複制圖檔,因為圖檔也是二進制位組成的

源檔案test.jpg這個需要找個圖檔,目的檔案result.jpg這個是複制後生産的

//工具類
package com.maoge.stream;
import java.io.File;
public class StreamUtils {
    //用于定義每次讀取的長度
    public static final int BUFFER_LENGTH=512;
    //檔案對象
    public static File FILE_FOR_READ;
    public static File FILE_FOR_WRITE;
    static{
        FILE_FOR_READ=new File("C:\\test.jpg"); 
        FILE_FOR_WRITE=new File("C:\\result.jpg"); 
    }
}
      

複制過程,該方法是OutputStreamDemo類的靜态方法。

public static void fileCopy(){
        FileInputStream in=null;
        FileOutputStream out=null;
        try {
            in=new FileInputStream(StreamUtils.FILE_FOR_READ);
            out=new FileOutputStream(StreamUtils.FILE_FOR_WRITE);
            int c;
            while((c=in.read())!=-1)
                out.write(c);
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }finally{
            try {
                in.close();
            } catch (IOException ioEx) {
                System.out.println(ioEx.toString());
            }
            try {
                out.close();
            } catch (IOException ioEx) {
                System.out.println(ioEx.toString());
            }
        }
    }