我为我的朋友们运行了一个Minecraft服务器,不久前我非常狡猾地安装了一个安装程序,可以下载mod并将它们正确安装到正确的位置。
在弄清楚如何做我想做的事情大约6个小时后,我成功找到了一个正常工作的安装程序。我今天再试一次,发现它已停止工作了。我一直试图修复它,但无济于事。我找不到任何实际上要下载整个文件的解决方案,而是创建一个空的4KB文件。我尝试了另一台计算机,发生了同样的事情。我正在运行最新版本的Java。
这是我用来下载文件的方法。我使用ReadableByteChannel
尝试了解决方案,但是产生了类似的结果,文件空白为1KB。
public void download(String filename, URL url) {
try {
String fileName = filename;
URL link = url;
InputStream in = new BufferedInputStream(link.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
StringBuffer stringBuffer = new StringBuffer();
while (-1 != (n = in.read(buf))) {
out.write(buf, 0, n);
}
out.close();
in.close();
byte[] response = out.toByteArray();
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(response);
fos.close();
System.out.println("Download complete!");
} catch (Exception e) {
System.out.println("Download failed, something went wrong!");
}
}
上述方法有问题吗?我无法真正了解下载文件的工作原理,否则我自己会对其进行故障排除。我可以在谷歌上找到的任何方法都以完全相同的方式进行。
Printing stack trace:
at Install.download(Install.java:93)
at Install.downloadFile(Install.java:41)
at Install.main(Install.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
编辑:问题已解决,使用其他文件托管网站来托管文件。现在我只需要弄清楚如何在不更改URL的情况下更新文件。