1. 程式人生 > 程式設計 >Java實現inputstream流的複製程式碼例項

Java實現inputstream流的複製程式碼例項

這篇文章主要介紹了Java實現inputstream流的複製程式碼例項,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

獲取到一個inputstream後,可能要多次利用它進行read的操作。由於流讀過一次就不能再讀了,而InputStream物件本身不能複製,而且它也沒有實現Cloneable介面,所以得想點辦法。

實現思路:

1、先把InputStream轉化成ByteArrayOutputStream

2、後面要使用InputStream物件時,再從ByteArrayOutputStream轉化回來

程式碼

package com.test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class StreamOperateUtil {
	public static void main(String[] args) throws FileNotFoundException {
		InputStream input = new FileInputStream("c:\test.txt");
		//InputStream input = httpconn.getInputStream(); //這裡可以寫你獲取到的流
		ByteArrayOutputStream baos = cloneInputStream(input);
		// 開啟兩個新的輸入流 
		InputStream stream1 = new ByteArrayInputStream(baos.toByteArray());
		InputStream stream2 = new ByteArrayInputStream(baos.toByteArray());
	}
	private static ByteArrayOutputStream cloneInputStream(InputStream input) {
		try {
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			byte[] buffer = new byte[1024];
			int len;
			while ((len = input.read(buffer)) > -1) {
				baos.write(buffer,len);
			}
			baos.flush();
			return baos;
		}
		catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。