我试图从网址下载文件,但如果网址不存在,则表示网站出错。
我的第一个解决方案:
try {
saveUrl("temp.pgm",webAdress.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
saveUrl方法:
public void saveUrl(final String filename, final String urlString)
throws MalformedURLException, IOException {
BufferedInputStream in = null;
FileOutputStream fout = null;
try {
in = new BufferedInputStream(new URL(urlString).openStream());
fout = new FileOutputStream(filename);
final byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
} finally {
if (in != null) {
in.close();
}
if (fout != null) {
fout.close();
}
}
}
如果我在webAdress中放置随机字符串(例如" asdasdasd")异常不起作用,错误是:
java.net.MalformedURLException: no protocol: ghghjghj
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at pl.edu.pwr.pp.LoadActivity.saveUrl(LoadActivity.java:254)
at pl.edu.pwr.pp.LoadActivity$5.actionPerformed(LoadActivity.java:179)
我尝试了另一种解决方案,但存在同样的问题:
File pathToTmpFile = new File("tmpfile.pgm");
try {
FileUtils.copyURLToFile(new URL(webAdress.getText()), pathToTmpFile);
} catch (IOException e) {
e.printStackTrace();
}
pathToTmpFile.delete();
我不知道为什么例外不起作用(如果下载了url退出文件)。
答案 0 :(得分:0)
我不知道为什么例外不起作用
确实有效。用户输入了ghghjghj:
...某些东西,你得到了一个完全合适的例外。
答案 1 :(得分:0)
您必须在MalformedURLException
方法中捕获try-catch
块内的saveURL
,否则您将从saveURL
方法移除try-catch块。
尝试以下代码段。
try {
in = new BufferedInputStream(new URL(urlString).openStream());
fout = new FileOutputStream(filename);
final byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
} catch(IOException ioe) {
throw ioe; //Propogation of exception
} finally {
if (in != null) {
in.close();
}
if (fout != null) {
fout.close();
}
}