Могу ли я легко конвертировать InputStream
в BufferedReader
, используя Гуава?
Я ищу что-то вроде:
InputStream inputStream = ...;
BufferedReader br = Streams.newBufferedReader(inputStream);
Я могу открывать файлы, используя Files.newReader(File file, Charset charset)
. Это круто, и я хочу сделать то же самое, используя InputStream
.
UPDATE:
Использование CharStreams.newReaderSupplier
кажется мне многословным. Поправьте меня, если я ошибаюсь, но для того, чтобы легко конвертировать InputStream
в BufferedReader
, используя Guava, мне нужно сделать что-то вроде этого:
final InputStream inputStream = new FileInputStream("/etc/fstab");
Reader bufferedReader = new BufferedReader(CharStreams.newReaderSupplier(new InputSupplier<InputStream>(){
public InputStream getInput() throws IOException {
return inputStream;
}
}, Charset.defaultCharset()).getInput());
Конечно, я могу создать помощника, например:
return new BufferedReader(new InputStreamReader(inputStream));
Однако я думаю, что такой помощник должен предлагать Guava IO. Я могу сделать такой трюк для экземпляра файла. Почему я не могу для InputStream?
// Guava can do this
Reader r = Files.newReader(new File("foo"), charset);
// but cannot do this
Reader r = SomeGuavaUtil.newReader(inputStream, charset);
Поправьте меня, если я ошибаюсь, но мне кажется, что не хватает API.