Когда будет EOFException происходить в потоках JAVA

with open("in.txt") as f:
    lines = [l for l in lines if "ROW" in l]
with open("out.txt", "w") as f1:
    f1.writelines(lines)

другой путь

with open("in.txt") as f, open("out.txt", "w") as f1:
    for line in f:
        if "ROW" in line:
            f1.write(line) 
16
задан GEOCHET 19 March 2009 в 22:48
поделиться

3 ответа

EOFException является подклассом IOException. Это будет брошено, при попытке читать из потока и больше нет данных, которые будут считаны (например, потому что Ваш DataInputStream перенесен вокруг FileInputStream, и Вы пытаетесь считать больше байтов, чем оставлено в файле).

3
ответ дан 30 November 2019 в 22:10
поделиться

Ключевое слово неожиданно.

Если Вы используете DataInputStream и читаете 4-байтовое целое число, но было только 3 байта, остающиеся в потоке, Вы получите EOFException.

Но если Вы назовете чтение () в конце потока, то Вы просто вернетесь-1 и никакое исключение.

7
ответ дан 30 November 2019 в 22:10
поделиться

Ответ на другую часть вопроса: Да, EOF означает, что больше данных не будет замечено на потоке; необходимо закрыть его.

4
ответ дан 30 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: