метод mark () и reset () в Java - PullRequest
       12

метод mark () и reset () в Java

3 голосов
/ 04 октября 2019

Согласно документации,

void mark (int readlimit): Отмечает текущую позицию в этом входном потоке. Метод mark для PushbackInputStream ничего не делает .

void reset (): Перемещает этот поток в позицию во время последнего вызова метода mark в этом входном потоке. ,Сброс метода для класса PushbackInputStream ничего не делает , кроме как генерирует IOException.

Вы можете проверить выше ' НИЧЕГО '. Итак, если это так, зачем и где это полезно? В какой ситуации я могу использовать оба метода выше?

и ниже приведен пример:

import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.PushbackInputStream; 
public class PushbackInputStreamDemo  
{ 
    public static void main(String arg[]) throws Exception 
    { 
        PrintWriter pw = new PrintWriter(System.out, true); 
        String str = "GeeksforGeeks a computer science portal "; 
        byte b[] = str.getBytes(); 
        ByteArrayInputStream bout = new ByteArrayInputStream(b); 
        PushbackInputStream push = new PushbackInputStream(bout); 

        int c; 
        while((c=push.read())!=-1) 
        { 
            pw.print((char)c); 
        } 
        pw.println(); 

        // marking the position  
        push.mark(5); 

        // reseting is not supported throw exception 
        push.reset(); 

        pw.close(); 
    } 
} 

Выше приведен пример, но не получается, что именно обаметоды делает. Пожалуйста, руководство.

1 Ответ

3 голосов
/ 04 октября 2019

Методы mark и reset являются необязательными операциями, которые должны поддерживаться не каждым InputStream. Вы можете вызвать markSupported, чтобы узнать, если это так.

PushbackInputStream не поддерживает эти методы.

Методы все еще там, потому что они определены в интерфейсе InputStream. Возможно, плохое дизайнерское решение (могло быть добавлено в отдельный интерфейс), но это так.

...