В соответствии с this documentation он говорит, что:сброса() на InputStream без знака()
void reset()
Репозиционирования этого поток в положение, в то время, когда метод
mark
в последний раз называемого в данном входном потоке.
Но что произойдет, если mark()
никогда не назывался? Будет ли он сбрасываться до начала потока (это то, что я хочу), или оно будет неопределенным? Кроме того, когда я смотрю на документацию для markSupported()
он говорит:
Тесты, если этот входной поток поддерживает
mark
и сбросаmethods
.
Таким образом, это также проверяет сброс, что указывает на то, что сброс также может не поддерживаться. Безопасно ли в этом случае, если я просто закрою и снова открою поток в своем собственном коде сброса?
Вы попробовали? (Ссылаясь на «Но что произойдет, если знак() никогда не вызывался?») – Fildor
Попытка привести пример к конкретной реализации - это не то же самое, что работать со стандартом. И да, я знаю, что он работает в настоящий момент, но может не сработать, если я продолжу класс с другой реализацией. – Devolus
Я вижу, поэтому вы хотите сделать код независимым от конкретной Stream-реализации, не так ли? Если я правильно помню, сброс только имеет смысл, если знак поддерживается. И я мрачно помню, что читал, что если он поддерживается, и знак не был вызван, то сброс либо выведет исключение IOException, либо перемотается в начало. – Fildor