我正在尝试使用以下代码使用简单的java类下载文件:
public class Download {
public static void main(String[] args) throws Exception {
Download d = new Download();
d.URLSetUp("http://www.sheldonbrown.com/web_sample1.html");
}
public String URLSetUp(String urlProp) throws Exception {
StringBuffer tempData = new StringBuffer();
String contentXML = "";
String line = "";
URL url1;
try {
url1 = new URL(urlProp);
URLConnection conn = url1.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn
.getOutputStream());
BufferedReader rd = new BufferedReader(new InputStreamReader(conn
.getInputStream()));
while ((line = rd.readLine()) != null) {
tempData.append(line);
}
contentXML = tempData.toString();
wr.close();
rd.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (contentXML != null) {
return contentXML;
} else {
System.out.println("Error");
}
return null;
}
}
它给了我以下错误:
#
# An unexpected error has been detected by Java Runtime Environment:
#
# Internal Error (434C41535326494C453041525345520E4350500B65), pid=5156, tid=4296
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_03-b05 mixed mode)
# An error report file with more information is saved as hs_err_pid5156.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
如果你有任何人有任何想法,请告诉我。
感谢
斯纳
答案 0 :(得分:2)
正如您可能已经确定的那样,这是您的虚拟机崩溃。在Java中你通常做的任何事都不应该触发这个,因此我首先要升级你的JVM。 1.6.0_ 03 已经很老了。
This page详细介绍了Java 7下载以及早期的Java 6 JDK。正如你所看到的那样,他们的版本是31版,因此你已经过时了。
如果您想进一步调试,请记下上面的错误报告文件并查看this SO answer。
答案 1 :(得分:1)
源文件是正确的,我尝试它并且它可以工作。
只有一个错误,但与您的问题无关。您正在使用readLine()
方法。当您获得该行并将其追加到tempData
时,您将丢失行终止字符,因此请记住解决此问题,或者更改文件。