потоки в строки: объединение нескольких файлов в одну строку - PullRequest
3 голосов
/ 09 марта 2011

У меня есть два текстовых файла, которые я хочу взять в виде потока и преобразовать в строку.В конечном итоге я хочу объединить два отдельных файла.

Пока у меня есть

     //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 не принимает несколько строк в качестве аргументов.Так что мне нужно сделать?Отдельно конвертировать их и объединить?

Может кто-нибудь показать мне простой способ сделать это?

Ответы [ 4 ]

6 голосов
/ 09 марта 2011

Звучит так, будто вы хотите объединить потоки. Вы можете использовать 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();
2 голосов
/ 09 марта 2011

Вы можете использовать commons-io, который может читать поток в строку

http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html#toString%28java.io.InputStream%29

0 голосов
/ 09 марта 2011

Создайте цикл, который для каждого файла загружает текст в StringBuilder. Затем, после добавления данных каждого файла, вызовите toString () в компоновщике.

0 голосов
/ 09 марта 2011

От руки я могу придумать пару способов: создать StringBuilder, затем преобразовать каждый поток в строку и добавить к построителю строк.

Или создать поток памяти для записи и направить каждый входной поток в этот поток памяти,затем преобразовать это в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...