【发布时间】:2016-02-23 17:33:56
【问题描述】:
我将 InputStream 设置为在线托管的原始文本文件的 url。每一行都是不同的说法,方法应该是从文件中获取文本并将其保存到缓存文件夹以供应用程序使用。连接到 URL 没有问题,否则它会在日志中给出 FileNotFoundException(测试过),并且生成了缓存文件,但它没有将任何内容保存到缓存文件(有权限,也测试过)。是什么导致这种情况发生?
从页面读取的代码:
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 中被特别警告。 -
'连接到 URL 没有问题,否则会给出 FileNotFoundException'。不,那会产生 SocketTimeoutException。
-
@greenapps 不正确。如果连接失败,它会给出一个
ConnectException,如果 HTP 状态是 404,它会给出一个FileNotFoundException,这两者都是 URL 的问题,如果他设置了读取超时并且它被触发,它会给出一个SocketTimeoutException。跨度> -
好的。因为一切都是例外。不是我能记住它们,对不起。
标签: java android url inputstream