Java代码如何使用url下载文件(并另存为)呢?
下文笔者讲述使用url下载文件的方法分享,如下所示
url下载文件
下载URL信息的实现思路:
1.定义URL对象
2.定义URLConnection对象
3.借助InputStream对象下载流信息
例:url下载文件
/**
*
* @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 {
//下载文件
UrlDownloadUtil.downloadFile("http://****/***.zip","下载到指定路径","下载后的指定文件名");
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


