1. 程式人生 > >序列流(集合流) * 把n個流合併在一起讀取

序列流(集合流) * 把n個流合併在一起讀取

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.SequenceInputStream;

/**
 * 序列流(集合流)
 * 把n個流合併在一起讀取
 * @author jiaxutianhuo
 *
 */
public class E {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			//第一個檔案流
			FileInputStream fis1=new FileInputStream("F:/iotest/ddt2.txt");
			//第二個檔案流
			FileInputStream fis2=new FileInputStream("F:/iotest/ddt3.txt");
			//合併到序列流中。
			SequenceInputStream sis=new SequenceInputStream(fis1, fis2);
			byte[] b=new byte[1024];
			int off=0;
			int length=fis1.available()+fis2.available();
			int i;
			//一次性讀取。由於讀取一個檔案流之後,會暫停,所以要寫while迴圈。
			while ((i=sis.read(b,off,length))!=-1) {
				off+=i;
				System.out.println(off);
			}
			
			System.out.println(new String(b));
			sis.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.SequenceInputStream;

/**
 * 序列流(集合流)
 * 把n個流合併在一起讀取
 * @author Administrator
 *
 */
public class Ch07 {
	
	public static void main(String[] args) {
		
		try {
			//第一個檔案流
			FileInputStream fis1=new FileInputStream("F:/iotest/ddt2.txt");
			//第二個檔案流
			FileInputStream fis2=new FileInputStream("F:/iotest/ddt3.txt");
			//合併到序列流中
			SequenceInputStream sis=new SequenceInputStream(fis1, fis2);
			//方式1
//			//臨時存放資料的陣列
//			int len =fis1.available()+fis2.available();
//			byte[] b=new byte[2*len+1];
//			//把每一次讀取到的臨時資料存放如sb中
////			StringBuffer sb=new StringBuffer();
//			//一次性讀取所有的內容
//			int off=0;
//			int i=0;
//			while((i=sis.read(b,off,len))!=-1) { 
////				sb.append();
//				off+=i;
//			}
//			System.out.println(new String(b));
			
			//方式2
			byte[] b=new byte[2];
//			StringBuffer sb=new StringBuffer();
//			int i=0;
			while(sis.read(b)!=-1) {
				System.out.print(new String(b));
//				sb.append(new String(b));
			}
//			System.out.println(sb.toString());
			sis.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

相關推薦

序列合流 * n合併一起讀取

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; im

劍指Offer面試題43Java版n骰子的點數

pac pos max mod ins pri class pro bili 題目:把n個骰子仍在地上。全部骰子朝上一面的點數之和為s,輸入n,打印出s的全部可能的值出現的概率。 解法一:基於遞歸求骰子的點數,時間效率不夠高 如今我們考慮怎樣統計每個點數出現的次數。要向

File型別、javaBean規範、IO、位元組4種、Serializable序列化介面、transient

*File型別:          java.io.File型別,可以對硬碟上的檔案/目錄,進行操作。                                   如檢視檔案/目錄的屬性資訊,                                   建立,

Java核心類庫-IO-打印PrintStream/PrintWriter

int div leo obj clas 打印流 println 不換行 pan 打印流,打印數據的,打印流只能是輸出流: PrintStream:字節打印流。 PrintWriter:字符打印流。 對於PrintWriter來說,當啟用字段刷新之後 PrintWrite

Spark性能調優之道——解決Spark數據傾斜Data SkewN種姿勢

sca ace 便是 triplet 大小 spark 構建 由於 itl 原文:http://blog.csdn.net/tanglizhe1105/article/details/51050974 背景 很多使用Spark的朋友很想知道rdd

51nod 1218 最長遞增子序列 V2dp + 思維

ear www str tdi binsearch tor con bsp href 題目鏈接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 題解:先要確定這些點是不是屬於最長

python學習十一 文件和

內存 無緩沖 abcd 連接 sss 文件操作 打開文件 while 3.5 11.1 打開文件   >>> f = open(r‘c:\text\somefile.txt‘), 第一個參數是文件名,必須有;第二個是模式;第三個參數是緩沖。   11.1

Spark性能優化之道——解決Spark數據傾斜Data SkewN種姿勢

至少 array 效率提升 default executors 並行處理 foreach shp 來源 原創文章,轉載請務必將下面這段話置於文章開頭處。本文轉發自技術世界,原文鏈接 http://www.jasongj.com/spark/skew/ 摘要 本文結合

HDU 5988最小網絡浮點數

blank empty pac scanf for continue -- math != 題目鏈接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5988 哇,以前的模版一直T,加了優先隊列優化才擦邊過。 建圖很好建,概率

網絡Flow Networks

上傳 term and 限制 包括 傳遞 forms idt 得到 一.基本術語 Basic Terminology   A source node in a directed graph is a node with no incoming edges. 入度為0   A

轉:TensorFlow入門 雙端 LSTM 實現序列標註分詞

vsm max poc 代碼 單詞 arch 大致 雙端 fun http://blog.csdn.net/Jerr__y/article/details/70471066 歡迎轉載,但請務必註明原文出處及作者信息。 @author: huangyongye @creat_

2018年全國多校算法寒假訓練營練習比賽第一場D N階漢諾塔變形

img 算法 cout ear www. sync 練習 style http https://www.nowcoder.com/acm/contest/67/D 思路: 先手動模擬一下過程,以下是模擬過程,按順序表示第幾步需要移動的盤標號 1 1 2 1 1 2

如何通過TortoiseGit小烏龜本地項目上傳到github上

創建 註冊 常規設置 安裝包 test 就會 OS 目的 工作 1.第一步: 安裝git for windows(鏈接:https://gitforwindows.org/)一路next就好了,         如果遇到什麽問題可以參考我另外一篇文章~^ - ^    

最長公共子序列Lcs 51Nod - 1006

string OS 模板題 != std ring str spa sin 20180604 11:28 給出兩個字符串A B,求A與B的最長公共子序列(子序列不要求是連續的)。 比如兩個串為: abcicba abdkscab ab是兩個串的子序列

Spark運行模式_基於YARN的Resource Manager的Client模式

發的 資源 使用 由於 ack 生成 clust 均衡 ont 現在越來越多的場景,都是Spark跑在Hadoop集群中,所以為了做到資源能夠均衡調度,會使用YARN來做為Spark的Cluster Manager,來為Spark的應用程序分配資源。 在執行Spark應

二者取其一初遇_網絡

break printf pan 一道 就是 就會 最小 問題 建立 二者取其一,就是一堆物品,放入兩個集合內,放進不同的集合內就會有不同的收益(或代價),使其收益(代價)最大(最小)的一種問題 通常這類問題,使用最小割定理解決。 最小割,即割邊集中權值之和最小的一個集合

序列層序

反序列化操作(層序):將序列生成層序遍歷的二叉樹 取出string陣列中的每一個str[i]元素,根據str[i]是否是#進行處理, (1)當str[i]=="#"時,返回NULL,不建立新節點 (2)當str[i]!="#"時,建立新的節點,返回該節點 #include &

序列先序

先序遍歷的序列化操作: 使用先序遍歷遍歷每一個節點, (1)當該結點的值為NULL時,返回"#!" (2)當該結點的值不為NULL時,str = T->data + "!"; (3)遞迴遍歷左子樹、右子樹 str = str + preSerialize(T->lch

序列先序

【注意】 反序列化操作,只有先序序列化,從來沒聽說過中序序列化、後序序 列化。實際上有中序後序序列化反序列化 要求:將vector<string> str容器中的字串生成二叉樹 解答: 依次獲取每一個字串str[index],進行序列化操作:

序列先序——split : string-->vector<string>

反序列化:將string生成二叉樹 先序反序列化操作具體步驟: (1)先將string字串進行分割,生成多個string構成的集合儲存在vector<string>中; (2)將vec<string>中的每一個元素存入到queue<string>中