/**
*
* @param remoteURL 下载文件的外链url链接
* @param fileDirectory 下载到指定的目录路径
* @param fileName 下载后的文件名称
* @return
*/
public static int downloadFile(String remoteURL,String fileDirectory,String fileName) {
remoteURL = urlEncodeURL(remoteURL);
Path p = Paths.get(fileDirectory);
File f_p = p.toFile();
try {
if (!f_p.exists()) {
f_p.mkdir();
}
File f = new File(p.toAbsolutePath().toString() + "/" + fileName);
if (!f.exists()) {
f.createNewFile();
}
FileOutputStream fos = new FileOutputStream(f);
byte[] pb = new byte[1024];
URL url = new URL(remoteURL);
URLConnection urlc = url.openConnection();
InputStream inputstream = urlc.getInputStream();
int length = -1;
while (true) {
length = inputstream.read(pb);
if (length < 0) {
fos.flush();
break;
} else {
fos.write(pb, 0, length);
}
}
inputstream.close();
fos.close();
return 0;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
//将url中的中文转码
public static String urlEncodeURL(String str) {
try {
String result = URLEncoder.encode(str, "UTF-8");
result = result.replaceAll("%3A", ":").replaceAll("%2F", "/").replaceAll("\\+", "%20");//+实际上是 空格 url encode而来
return result;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
//测试
public static void main(String[] angs) throws Exception {
//下载exe程序
UrlDownloadUtil.downloadFile("外链","下载到指定路径","下载后的指定文件名");
}
Java 根据外链URL下载文件,下载到指定路径并可重新命名文件名称
于 2022-09-17 10:06:33 首次发布