У меня есть InputStream, настроенный для обработки локальных файлов, но я хочу добавить возможность чтения из файла по сети позднее. Я предполагаю, что InputStream уже предназначен для этого.
Проблема, с которой я столкнулся, заключается в том, что InputStream не гарантирует, что данные будут доступны в любой момент времени, и данные могут стать доступными позже. Не уверен, что я правильно понимаю. Нет способа определить абсолютный размер доступных данных (в виде количества байтов) или даже если InputStream закрыт. Кажется, что если там есть файл, он должен иметь что-то доступное. Метод, который обрабатывает InputStream, вероятно, будет читать из него, и, если нет доступных данных, нет никаких причин его хранить. Что еще хуже, я даже не могу сказать, есть ли какие-либо доступные данные.
Итак, мой вопрос: для файла, считываемого по сети или локально, как я могу определить, открыт ли он или закрыт, и, возможно, определить размер файла на другом конце? Почему этот класс такой голый?