У меня есть InputStream, установленный на URL-адрес сырого текстового файла, размещенного в Интернете. Каждая строка представляет собой другое высказывание, и метод должен получать текст из файла и сохранять его в папку кеша для использования в приложении. Нет проблем с подключением к URL-адресу, в противном случае в журналах будет обнаружено FileNotFoundException (проверено это), а файл кэша создается, но он ничего не сохраняет в кэш-файле (имеет разрешения, тоже проверял). Что вызывает это?InputStream подключается к URL-адресу, но ничего не возвращает
код для чтения страницы:
protected Void doInBackground(Void... Params) {
try {
File quote = new File("Absolute path to cache");
URL url = new URL("URL of file");
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(quote);
byte[] buffer = new byte[is.available()];
is.read(buffer);
os.write(buffer);
is.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Классическое неправильное использование 'available()', и тот, который специально предупрежден в Javadoc. – EJP
«Нет проблем с подключением к URL-адресу, иначе это даст FileNotFoundException». Нет. Это даст исключение SocketTimeoutException. – greenapps
@greenapps Неправильно. Это дало бы «ConnectException», если соединение не удалось, «FileNotFoundException», если статус HTP был 404, оба из которых являются проблемами с URL-адресом и «SocketTimeoutException», если он установил тайм-аут чтения, и он был запущен. – EJP