java IO流(java分割、合併任意類型文件)

/*
 * 以下代碼演示了java分割和合並文件的功能。
 */
import java.io.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;




public class SplitFileDemo {
public static void main(String[] args) throws IOException {
//splitFile();
merge();
}
//合併文件
public static void merge() throws IOException
{
//多個讀取流對象與文件相關聯,首先創建集合
ArrayList<FileInputStream> a1=new ArrayList<FileInputStream>();
//添加輸入流對象操作文件。
a1.add(new FileInputStream("c:\\abc\\1.txt"));
a1.add(new FileInputStream("c:\\abc\\2.txt"));
a1.add(new FileInputStream("c:\\abc\\3.txt"));
//定義a1的迭代器。
final Iterator<FileInputStream> it=a1.iterator();
//定義一個枚舉類型的變量,複寫裏面的方法。
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {
//判斷枚舉裏是否還有元素
public boolean hasMoreElements() {
//返回一個ithasNext();判斷a1裏面是否還有元素
return it.hasNext();
}
//如果此枚舉對象至少還有一個可提供的元素,則返回此枚舉的下一個元素。
public FileInputStream nextElement() {
//返回a1裏的下一個元素
return it.next();
}};
SequenceInputStream sis =new SequenceInputStream(en);
//創建文件讀取流對象
FileOutputStream fos=new FileOutputStream("c:\\demo7.txt");
//定義字節數組
byte[] buf=new byte[200];
//記錄數組的長度。
int len=0;
//將序列流裏的字符全部存入數組。
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
public static void splitFile() throws IOException
{
//創建字節輸入流對象讀取文本。
FileInputStream fis=new FileInputStream("c:\\b.txt");
//創建字節輸出流讀取文本。
FileOutputStream fos=null;
//創建字節數組。
byte[] buf=new byte[40];
int len=0;
int count=1;
//將文本中的字節數據存入數組中。
while ((len=fis.read(buf))!=-1)
{
//使用字節輸出流往文本里寫入數據。
fos=new FileOutputStream("c:\\abc\\"+(count++)+".txt");
//將字節數組中的字節數據寫入輸出流的文本中。
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章