部分代码如下:
/**
* 从网络Url中下载文件
* @param urlStr 下载的URL
* @param fileName 新文件名称
* @param savePath 保存的路径,不包含文件名称
* @throws IOException
*/
public static void downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{
logger.info("-----------------------downLoadFromUrl old URL is :\n"+urlStr);
String downloadUrl = urlStr;
logger.info("-----------------------downLoadFromUrl new URL is :\n"+downloadUrl);
logger.info("-----------------------save dir is :\t"+savePath+", file name is :\t"+fileName);
//downloadUrl = urlStr;
URL url = new URL(downloadUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为10秒
conn.setConnectTimeout(10*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取自己数组
byte[] getData = readInputStream(inputStream);
//文件保存位置
File saveDir = new File(savePath);
if(!saveDir.exists()){
saveDir.mkdir();
}
logger.info("-----------------------------下载的文件保存位置为:"+saveDir+File.separator+fileName);
File file = new File(saveDir+File.separator+fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(getData);
if(fos!=null){
fos.close();
}
if(inputStream!=null){
inputStream.close();
}
logger.info("-----------------------downLoadFromUrl: "+url+" download success");
}
测试方法:
public static void main(String[] args) {
try{
downLoadFromUrl("http://101.95.48.97:8005/res/upload/interface/apptutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.zip",
"a.zip","d:/resource/images/diaodiao/country/");
}catch (Exception e) {
// TODO: handle exception
}
}
我使用上面的代码下载一个压缩文件,但是在linux下下载成功后,手动双击打开此文件,却提示文件损坏,windows下运行此代码就没问题,请问这是什么原因?