[英]streams to strings: merging multiple files into a single string
我有兩個文本文件,我想作為流抓取並轉換為字符串。 最終,我希望合並兩個單獨的文件。
到目前為止,我已經有了
//get the input stream of the files.
InputStream is =
cts.getClass().getResourceAsStream("/files/myfile.txt");
// convert the stream to string
System.out.println(cts.convertStreamToString(is));
getResourceAsStream不會將多個字符串作為參數。 那么我需要做什么? 單獨轉換它們並合並在一起?
任何人都可以告訴我一個簡單的方法嗎?
聽起來你想要連接流。 您可以使用SequenceInputStream從多個流創建單個流。 然后從該單個流中讀取數據並根據需要使用它。
這是一個例子:
String encoding = "UTF-8"; /* You need to know the right character encoding. */
InputStream s1 = ..., s2 = ..., s3 = ...;
Enumeration<InputStream> streams =
Collections.enumeration(Arrays.asList(s1, s2, s3));
Reader r = new InputStreamReader(new SequenceInputStream(streams), encoding);
char[] buf = new char[2048];
StringBuilder str = new StringBuilder();
while (true) {
int n = r.read(buf);
if (n < 0)
break;
str.append(buf, 0, n);
}
r.close();
String contents = str.toString();
您可以使用commons-io,它能夠將Stream讀入字符串
我可以想到幾個方法創建一個StringBuilder,然后將每個流轉換為一個字符串並附加到stringbuilder。
或者,創建一個可寫的內存流並將每個輸入流流式傳輸到該內存流中,然后將其轉換為字符串。
創建一個循環,為每個文件將文本加載到StringBuilder
。 然后,在附加每個文件的數據后,在構建器上調用toString()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.