【发布时间】:2016-09-08 06:11:20
【问题描述】:
我正在尝试从我的网站下载一个 EXE 文件。举个例子,我去了 rarlab 的网站,并下载了我自己的 64 位 WinRAR 版本的全新安装(我们都知道那是什么。)
无论如何,我将 64 位“安装程序”exe 文件上传到我网站的根文件夹,可以轻松下载(用于测试目的)。通过任何浏览器访问我的网站,我可以成功下载“安装程序”从 rarlabs 文件并像任何其他 EXE 文件一样执行它。
现在,看在上帝的份上,这是我无法弄清楚的令人困惑的部分。使用这个简单的代码,我撕掉了其他一些 Stack Overflow 答案,我可以从给定的 URL 下载任何 EXE 文件。
代码...
public static void downloadEXE(URL url, String file) throws IOException {
InputStream in = url.openStream();
FileOutputStream fos = new FileOutputStream(new File(file));
int length = -1;
byte[] buffer = new byte[1024];// buffer for portion of data from
// connection
while ((length = in.read(buffer)) > -1) {
fos.write(buffer, 0, length);
}
fos.close();
in.close();
}
URL 和 FILE 参数在哪里...
URL url = new URL("http://www.website.com/winrar-x64-540.exe");
String file = "c:\\Users\\..\\Documents\\winrar-x64-540.exe";
是的,这会将文件从我的站点下载到我的文档文件夹中,没有任何错误,但是当我运行它时,我得到了这个错误...
不止于此,我决定尝试使用相同的代码从官方网站 rarlabs 下载相同的 64 位 EXE“设置”文件EXCEPT。你可以相信我使用了正确的 URL,因为这次我不仅使用此代码下载了 EXE 文件,而且还能够成功运行它!
让我怀疑我的网站有问题,而不是 EXE 文件?我还应该提到一个非常重要的发现,我发现它很可能会有所帮助。我决定将 WORKING EXE 文件中的属性与 BROKEN 患病文件的属性进行比较。正常工作的大小为 2.07 MB,而损坏的大小高达 375 字节!损坏的 exe 与工作 exe 的属性不匹配ATALL。
看到这两个文件的比较让我认为我的网站没有问题,因为我可以通过任何浏览器成功下载并启动我的文件,但代码有错误。
如果您需要解决问题,请向我提出任何问题。让我知道我需要具体说明的地方。谢谢大家。 :)
【问题讨论】:
-
您网站上的文件有多大?
-
这很快,它是 2.07 MB。与我在帖子中谈到的“WORKING”exe文件相同。
-
您是否在调试器中单步执行了您的代码以了解它为何过早终止?是否有您没有告诉我们的异常消息?
-
使用java代码下载的文件大小是多少?
-
完全没有错误。我使用 eclipse 作为我的 IDE。我有个主意!让我试着把它放在一个线程中?
标签: java url 64-bit exe download