Есть ли способ создать FileInputStream с функцией отметки? - PullRequest
18 голосов
/ 31 марта 2011

Есть ли какой-нибудь возможный способ создать FileInputStream с отметкой поддерживаемой функции как true?

Ответы [ 4 ]

18 голосов
/ 31 марта 2011

Оберните ваш Fileinputstream внутри BufferedInputStream .

Отметки поддержки буферизованных потоков.

11 голосов
/ 31 марта 2011

Оберните это в BufferedInputStream.

вместо

FileInputStream fis = new FileInputStream(...);

сделать это:

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(...));

и используйте bis вместо fis; больше ничего не должно измениться в вашем коде.

10 голосов
/ 12 апреля 2013

BufferedInputStreams не являются магией.Они будут поддерживать маркировку только для своих основных буферов, и эти буферы будут занимать память.Поэтому, если вы идете по этому пути, важно, чтобы вы понимали вариант использования и потенциально вызывали конструктор BufferedInputStream с буфером соответствующего размера.Если базовый файл начинает увеличиваться в размерах и вы отмечаете достаточно далеко назад, этот метод может не сработать.

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

Попробуйте что-то вроде этого

public FileInputStream fstream;
public DataInputStream in;
public BufferedInputStream bs;
public String path;

public void myExample() throws IOException{
    path = "yourPath";
    try {
        fstream = new FileInputStream(path);
        in = new DataInputStream(fstream);
        bs = new BufferedInputStream(new InputStreamReader(in));

        //do something

        br.close(); //when do something is completed
        } catch (FileNotFoundException ex) {
        JOptionPane.showMessageDialog(null, "File not found");
        }
        }
...