2017-04-24 36 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 =“姜苹果”将通过为“姜苹果” –

相关问题