❶ java中如何將file類型轉換為inputstream類型啊剛學java,糾結啊~
你應該問的是 為 file類構造一個節點流來輸出或輸入吧,
File file = new File("D:/zj.txt");
InputStream is = new FileInputStream(file)
is就可以從該file里讀取數據了,
int length = 0;
byte[] b = new byte[200];
while(-1 != ( length = is.read(b[200]) )
{
System.out.print(new String(b, 0, length));
}
is.close();
這是標準的從file里以位元組流讀取的模板
建議自己去網路下Java IO,這是比較重要的知識點,理解節點流和過濾流的概念和所運用的裝飾模式,才會運用自如。
參考下這個
http://blog.csdn.net/ilibaba/article/details/3955799
❷ Java Stream- 流式處理
Java Stream 流式處理是一種基於數據流的編程模型。以下是關於Java Stream流式處理的詳細解答:
流概念:
- 流獲取:從數據源獲取流。
- 轉換操作:對流中的元素進行一系列中間操作,如過濾、映射、排序等,這些操作可以鏈式調用,且可以多次執行。
- 終止操作:觸發流的計算,並產生結果,如遍歷、收集、匹配等,這些操作只能執行一次。
流類型:
- stream:單管道流,順序處理數據。
- parallelStream:多管道並行流,利用多核CPU並行處理數據,底層使用ForkJoinPool實現。
- forEachOrdered:在並行流中強制有序處理元素,但效率較低。
函數式介面:
- Consumer:接受一個輸入參數並且不返回結果的操作。
- Supplier:提供一個結果或者值,但不接受輸入參數。
- Function:接受一個輸入參數並產生一個結果。
- Predicate:表示一個參數的布爾值函數。
Lambda 表達式:
- 結構: > {代碼語句},用於簡化函數式介面的編寫。
- 特點:延遲運行,即只有在實際需要時才執行Lambda表達式中的代碼,這有助於提升性能。
流獲取方式:
- Collection 子介面:如List、Set等,直接調用stream方法獲取流。
- Map:不是Collection介面的子介面,需按Key、Value、Entry分別調用stream方法獲取流。
- Array:使用Stream.of方法將數組轉換為流。
轉換操作:
- filter:過濾流中的元素,只保留滿足條件的元素。
- map:將流中的元素轉換為另一種類型的元素。
- flatMap:將流中的每個元素映射為流,並將這些流連接成一個流。
- distinct:去除流中的重復元素。
- sorted:對流中的元素進行排序。
- limit:截取流中的前n個元素。
- skip:跳過流中的前n個元素。
- peek:對流中的元素執行操作,但不改變流本身。
終止操作:
- forEach:遍歷流中的每個元素,執行給定的操作。
- collect:將流中的元素收集到集合中,如List、Set、Map等。
- findFirst/findAny:查找流中的第一個或任意元素。
- allMatch/anyMatch/noneMatch:判斷流中的所有、任意、無元素是否滿足條件。
- count:統計流中的元素個數。
- max/min:獲取流中的最大或最小元素。
- rece:將流中的元素組合起來,生成單個值。
- toArray:將流中的元素轉換為數組。
- concat:將兩個流合並為一個流。