---------------------- ASP.Net+Android+IOS開發、 .Net教育訓練、期待與您交流! ----------------------
SequenceInputStream表示其他輸入流的邏輯串聯。它從輸入流的有序集合開始,并從第一個輸入流開始讀取,直到到達檔案末尾,接着從第二個輸入流讀取,依次類推,直到到達包含的最後一個輸入流的檔案末尾為止。
構造器: SequenceInputStream(Enumeration<? extends InputStream> e):通過記住參數來初始化新建立的SequenceInputStream,該參數必須是生成運作時類型為InputStream對象的Enumeration型參數。
SequenceInputStream(InputStream s1, InputStream s2):通過記住這兩個參數來初始化新建立的SequenceInputStream
(将按順序讀取這兩個參數,先讀取s1,然後讀取s2),以提供從此SequenceInputStream讀取的位元組。
方法: int read():從此輸入流中讀取下一個資料位元組。 int read(byte[] b, int off, int len):将最多len個資料位元組從此輸入流讀入byte數組。
使用序列流将多個檔案合并為一個檔案
public class SequenceDemo {
public static void main(String[] args) throws IOException {
//使用集合将多個輸入位元組流存儲
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(new FileInputStream("d:\\1.txt"));
v.add(new FileInputStream("d:\\2.txt"));
v.add(new FileInputStream("d:\\3.txt"));
//使用疊代
Enumeration<FileInputStream> enumeration = v.elements();
//使用序列流将多個輸入流合并為一個輸入流
SequenceInputStream sequence = new SequenceInputStream(enumeration);
FileOutputStream fos = new FileOutputStream("d:\\general.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len = sequence.read(buf)) != -1){
fos.write(buf, 0, len);
}
sequence.close();
fos.close();
}
}
對一個圖檔進行切割,然後在合并。
public class SeqDemo {
public static void main(String[] args) throws IOException {
//splitFile();
mergeFile();
}
//切割
public static void splitFile() throws IOException{
//定義一個1M長度的數組,即每個檔案大小為1M
byte[] buf = new byte[1024*1024];
int len = 0;
int count = 1;
FileInputStream fis = new FileInputStream("d:\\1.jpg");
FileOutputStream fos = null;
while((len = fis.read(buf)) != -1){
//将輸出流定義在循環内,即每循環一次,建立一個新的對象,以便能夠切割
fos = new FileOutputStream("e:\\" + (count++) + ".part");
fos.write(buf, 0, len);
}
fis.close();
fos.close();
}
//合并
public static void mergeFile() throws IOException{
//使用集合将流合并
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(new FileInputStream("e:\\1.part"));
v.add(new FileInputStream("e:\\2.part"));
v.add(new FileInputStream("e:\\3.part"));
v.add(new FileInputStream("e:\\4.part"));
Enumeration<FileInputStream> e = v.elements();
SequenceInputStream s = new SequenceInputStream(e);
FileOutputStream fos = new FileOutputStream("e:\\all.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len = s.read(buf)) != -1){
fos.write(buf, 0, len);
}
fos.close();
s.close();
}
}
---------------------- ASP.Net+Android+IOS開發、 .Net教育訓練、期待與您交流! ----------------------詳細請檢視: http://edu.csdn.net