2017-04-24 34 views
0

我上引入口文件作爲InputStreamReader的圖書館工作傳遞文件內容的方法參數(如字符串)

Reader fileReader = new InputStreamReader(new FileInputStream(new File("inputFile"),"UTF-8"); 

instances.addThruPipe(new CsvIterator(fileReader, Pattern 
       .compile("^(\\S*)[\\s,]*(\\S*)[\\s,]*(.*)$"), 3, 2, 1)); 

我有一個文件「INPUTFILE」內創建數據的另一種方法(選項卡分隔一個)。

是否有可能完全擺脫物理文件創建過程並將文件作爲參數傳遞?

String source = "This is the source of my input stream"; 
InputStream in = IOUtils.toInputStream(source, "UTF-8"); 

如果我可以用上面的方法做,我們如何照顧「\ t」和「\ n」的創建這樣的字符串時?

+0

多少數據你會使用的方法來創造?你不能重複使用早期文件中已經創建的數據嗎? –

+0

'inputFile'大約有500行 – Betafish

回答

0

我建議讓你的API以Reader作爲它的輸入參數。

現在來電者有責任創建一個Reader - 它可能是一個FileReader,InputStreamReader - 您的圖書館不需要關心。

您的圖書館可以繼續從Reader繼續構建CsvIterator,就像它目前一樣。

要進行測試,您可以將其傳遞給StringReader。在產品代碼中,調用者可以從文件,套接字,標準輸入 - 無論它喜歡什麼,都可以創建Reader

4

你保存一個字符串源文件,爲什麼不把這個字符串,而不是直接創建文件和傳遞文件

+0

當我們將參數作爲字符串傳遞時,我們如何處理製表符和新行。 – Betafish

+0

字符串將被傳遞,因爲它被保存爲字符串a =「姜蘋果」將通過爲「姜蘋果」 –

相關問題