java下载的文件是损坏的_linux系统下运行的java web项目下载远程文件,下载完成后提示文件已损坏...

本文探讨了一个在Linux系统下运行的Java Web项目中遇到的问题,即通过Java代码从URL下载的文件在下载完成后显示为损坏。代码显示了用于下载文件的方法,包括设置超时、请求头以及读取和保存输入流。尽管代码在Windows环境下运行正常,但在Linux下,文件在手动尝试打开时提示损坏。博主寻求原因并期望找到解决方案。
摘要由CSDN通过智能技术生成

部分代码如下:

/**

* 从网络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下运行此代码就没问题,请问这是什么原因?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值