无法两次读取相同的InputStream

Rya*_*gha 1 java inputstream

我有一个InputStream作为参数,当我第一次读取它时它工作得很好,但是,读取相同的InputStream不起作用。我就是无法mark()上班reset()。有人知道如何重置这个吗?我正在读取 .txt 文件。该文件包含不会重新出现的敌方对象的生成值,因为输入流标记(?)位于末尾,我猜?

readTxt(InputStream resource){
//resource is a .txt as ResourceStream
arrayList = new BufferedReader(new InputStreamReader(resource,
                StandardCharsets.UTF_8)).lines().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

Mạn*_*yễn 5

mark()仅当输入流支持时才有效(您可以通过markSupported().

它并不适用于每个流。

读取输入流的一种方法是将输入流的内容复制到数组并重新读取该数组:

byte[] buffer = new byte[2048];

ByteArrayOutputStream output = new ByteArrayOutputStream();

int byteCount;
while ((byteCount = inputStream.read(buffer)) != -1)
{
    output.write(buffer, 0, byteCount);
}
byte[] source = output.toByteArray();

// Now you have ability to reread the "secondary" input stream:
InputStream is = new ByteArrayInputStream(source); 
Run Code Online (Sandbox Code Playgroud)