尝试下载可执行文件时没有这样的文件异常



我正在努力为Malwarebytes,Adware Cleaner等创建个人实用程序下载器。但我以前从未使用过这样的事情。我四处搜索并找到了一些有关如何将文件从 URL 下载到目录中的文档,但我还没有能够让它工作。第一次它将目录变成一个无法使用的文件,现在我已经更改了URL,由于底部列出的错误,它无法下载。有人可以指出我正确的方向或告诉我我做错了什么吗?

package com.kcc;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
public class Testing2 {
public static String testURL;
public static String saveDir;
public static void main(String[] args) throws IOException {
testURL ="https://download.bleepingcomputer.com/dl/a652734ff3304da2530acb93754c1bf7/5af5a320/windows/security/security-utilities/a/adwcleaner/AdwCleaner.exe";
//"https://download.toolslib.net/download/file/1/1511?s=2LPvu8kniU2T794QD0FXSN21jxnJOqLP";
saveDir = "C:\Users\Austin\Desktop\kccutil";
download(testURL, saveDir);
}
private static Path download(String sourceURL, String targetDirectory) throws IOException
{
URL url = new URL(sourceURL);
String fileName = sourceURL.substring(sourceURL.lastIndexOf('/') + 1, sourceURL.length());
Path targetPath = new File(targetDirectory + File.separator + fileName).toPath();
Files.copy(url.openStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
return targetPath;
}
}

我目前收到这些错误

Exception in thread "main" java.nio.file.NoSuchFileException: C:UsersAustinDesktopkccutilAdwCleaner.exe
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
at java.nio.file.Files.newOutputStream(Files.java:216)
at java.nio.file.Files.copy(Files.java:3016)
at com.kcc.Testing2.download(Testing2.java:25)
at com.kcc.Testing2.main(Testing2.java:17)

编辑:对于上面的错误,结果是没有创建目录。但是现在我收到一个新错误

Exception in thread "main" java.io.FileNotFoundException: https://download.bleepingcomputer.com/dl/a652734ff3304da2530acb93754c1bf7/5af5a320/windows/security/security-utilities/a/adwcleaner/AdwCleaner.exe
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1872)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at java.net.URL.openStream(URL.java:1045)
at com.kcc.Testing2.download(Testing2.java:25)
at com.kcc.Testing2.main(Testing2.java:17)

出于调试目的,您可以尝试将文件保存到工作目录(即参考.文件夹(。使用此方法,您可以通过文件名访问文件。

对于将来,我建议您使用Java 7 NIO API:Paths.get()- 用于最初从部分构建路径,path.parent()- 引用父目录,path.resolve()- 构建子路径。

如果你想下载一个文件,你应该使用FTP服务器,而不是HTTP,以防你有可执行文件。 但是,如果您在网络上已经有一个HTTP链接可以调用可下载的.exe(就像您的情况一样(,那么您实际上并不需要下载方法。您只需要向导航器发送一个http请求(最好是Web应用程序(,如下所示:

File htmlFile = new File(url);
Desktop.getDesktop().browse(htmlFile.toURI());

或者您可以使用Apache Common IO的FileUtils下载该文件:

import org.apache.commons.io.FileUtils;
FileUtils.copyURLToFile(url, file_destination);

或者您可以使用Java NIO检查此响应

最新更新