當有輸入流inputstream的資料想要寫到資料流outputstream中時,這種情況比較簡單,直接read inputstream然後write到outputstream中即可;
當有輸出流資料需要轉換成輸入流使用時,就不那麼直觀了,我最初的想法是輸出流資料寫到檔案中,然後讀檔案就轉成輸入流啦,但是這種利用到硬碟的方法非常不可取的,後來上網查了一下,可以通過管道流pipedstream來實現轉換。
首先宣告乙個維護管道流的類
1public
class
pipedmanager catch
(ioexception e) 12}
1314
public
pipedinputstream getin()
1718
public
void
setin(pipedinputstream in)
2122
public
pipedoutputstream getout()
2526
public
void
setout(pipedoutputstream out)
29 }
在構造器中通過inputstream.connect方法將輸入流和輸出流聯絡到一起
測試類
1public
class
pipedtest
20out.close();
21inputstream.close();
22 } catch
(ioexception e) 25}
26}.start();
2728
29 fileoutputstream outputstream = new
fileoutputstream(writepath);
30new
thread()
40in.close();
41outputstream.close();
42 } catch
(ioexception e) 45}
46}.start();47}
48 }
第乙個執行緒是讀取乙個檔案,將其寫入到維護的管道輸出流中,
第二個執行緒是直接從管道輸入流中獲取資料然後寫到另外乙個檔案中,
最終可以看到資料從乙個檔案寫到了另外乙個檔案,證明輸出流的資料可以直接從輸入流中獲取到。
需要注意的是:我在使用的時候發現資料寫到管道輸出流這一步必須要起乙個執行緒,也就是第乙個執行緒,不然會一直阻塞
輸入流 輸出流
接受乙個字串,遇 空格 tab 回車 都結束 用法1 單個接收 cin.get 字元變數名 可以用來接收字元 include using namespace std main char ch ch cin.get 或者cin.get ch cout 用法2 cin.get 字元陣列名,接收字元數目 ...
IO輸出輸入流
這個東西的方法就是兩個 read 讀取檔案 close 釋放資源 fileinputstream in newfileinputstream e io fis.txt int b 0 while true system.out.println b 釋放資源 in.close 也就兩個兩個方法 wri...
輸入流 輸出流
1 mkdir 必須保證路徑上的父資料夾都存在 system.out.println 建立是否成功 f1.mkdir mkdirs 建立路徑上所有不存在的資料夾 system.out.println 建立是否成功 f1.mkdirs 2 讀取檔案 try fis.close catch fileno...