java下载网络文件

下面这段代码是下载一个http网络文件的代码,但有时候下载下来的图片是完整的,有时候下载下来的不完整,还有下载的ppt,pdf之类,也是打不开的。请大件们给指导一下,小弟感激不尽。

public String goDownLoad() throws IOException, URISyntaxException{

String urlPath ="http://www.yixue360.net/images/news/pic02.png";

URL _URL=new URL(urlPath);

HttpURLConnection con=(HttpURLConnection) _URL.openConnection();

con.connect();

InputStream fis=con.getInputStream();

byte[] buffer = new byte[fis.available()];

fis.read(buffer);

fis.close();

//获取文件名

String trueurl=con.getURL().toString();

String filename=trueurl.substring(trueurl.lastIndexOf('/')+1);

this.getResponse().reset();

this.getResponse().setHeader("Content-Type", "application/octet-stream");

this.getResponse().addHeader("Content-Disposition", "attachment;filename="+ new String(filename.getBytes(), "UTF-8"));

this.getResponse().addHeader("Content-Length", "" + con.getContentLength()+10024);

SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

this.getResponse().addHeader("Date", formate.format(new Date()));

OutputStream toClient = this.getResponse().getOutputStream();

toClient.write(buffer);

toClient.flush();

toClient.close();

return null;

}

java下载

下载网络文件

下载

下载http文件

分享到:

------解决方案--------------------

文件大小是不是超过了你设的Content-Length

------解决方案--------------------

用缓冲流缓冲一下。

要不容易出错。

InputStream is = URLHelper.getInputStreamByUrl("http://upload.newhua.com/6/73/1291012043416.jpg");

IOHelper.fromIputStreamToFile(is, "D:\\PP.jpg");

public static boolean fromIputStreamToFile(InputStream is,

String outfilepath) {

BufferedInputStream inBuff = null;

BufferedOutputStream outBuff = null;

try {

// 新建文件输入流并对它进行缓冲

inBuff = new BufferedInputStream(is);

// 新建文件输出流并对它进行缓冲

outBuff = new BufferedOutputStream(

new FileOutputStream(outfilepath));

// 缓冲数组

byte[] b = new byte[1024 * 5];

int len;

while ((len = inBuff.read(b)) != -1) {

outBuff.write(b, 0, len);

}

// 刷新此缓冲的输出流

outBuff.flush();

} catch (Exception e) {

return false;

} finally {

try {

// 关闭流

if (inBuff != null)

inBuff.close();

if (outBuff != null)

outBuff.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return true;

}

public class URLHelper {

public static String getStringByUrl(String urlstr){

String result="";;

try {

InputStream is = getInputStreamByUrl(urlstr);

result = IOHelper.fromIputStreamToString(is);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return result;

}

public static InputStream getInputStreamByUrl(String urlstr){

urlstr=urlstr.startsWith("http://")?urlstr:"http://"+urlstr;

System.out.println(urlstr);

URL url;

URLConnection conn;

InputStream is = null;

try {

url = new URL(urlstr);

conn = url.openConnection();

is=conn.getInputStream();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return is;

}

}

------解决方案--------------------

this.getResponse().setHeader("Content-Type", "application/octet-stream");

this.getResponse().addHeader("Content-Disposition", "attachment;filename="+ new String(filename.getBytes(), "UTF-8"));

this.getResponse().addHeader("Content-Length", "" + con.getContentLength()+10024);

是你设置了大小

------解决方案--------------------

inputStream.available()的api文档是这么说的

Note that while some implementations of InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream.

java下载网络中的文件,java下载网络文件解决思路相关推荐

  1. 如何下载网页中使用的JS及CSS文件

    关键字:下载网页中使用的JS及CSS文件 方法一: 凡浏览过的网页都会临时保存在:C:\Documents and Settings\Administrator(当前登陆用户名)\Local Sett ...

  2. php 下载后文件打不开,php 文件下载下来后文件打不开?解决思路

    当前位置:我的异常网» PHP » php 文件下载下来后文件打不开?解决思路 php 文件下载下来后文件打不开?解决思路 www.myexceptions.net  网友分享于:2013-02-21 ...

  3. Bug总结:python语言中出现的import error错误的解决思路

    Bug总结:python语言中出现的import error错误的解决思路 目录 解决问题 解决方法 解决问题 import error错误 解决方法 T1.查看是否存在该包,要么是python集成好 ...

  4. 下载链接中带有blob:https的视频文件

    想下载某酷上的视频资源,想当然的像下载图片一样:在浏览器找到图片的地址然后直接下载就行了呗.却发现https路径前带有blob: blob:https并不是一种协议,而是html5中blob对象在赋给 ...

  5. java properties native2ascii_Java中使用native2ascii命令处理.properties文件

    姓名:牛康 学号:17101223416 [嵌牛导读]:在Struts 2框架中经常会用到国际化资源对Struts应用的各页面提供国际化支持,必须用到native2ascii命令来处理该文件. [嵌牛 ...

  6. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

  7. 在JAVA语言程序中main_在Java程序main方法中,正确的参数是

    [单选题]下列叙述中,错误的是 [填空题]Access属于()数据库,Access中,不允许在主关键字字段中有重复值或(). [单选题]如下哪些字符串是Java中的标识符? [填空题]常用的基本电量传 ...

  8. ie中下载文件框中的文件名为“download.do”的解决办法

    最近在一个项目的维护中,发现ie中下载文件的时候,下载框中的文件名为"download.do".文件类型识别不了.保存后改了文件后缀是能够看到内容的.说明下载流数据那边是没有问题的 ...

  9. java 正则regex_Java中的正则表达式– Java Regex示例

    java 正则regex Welcome to Regular Expression in Java. It's also called Regex in Java. When I started p ...

  10. java从文本中读取,从Java中的文本文件中读取long类型

    我试图从BufferedReader类的readLine()方法从文本文件中读取长类型,然后我使用StringTokenizer解析第一个标记(这是长类型编号),但我面临的异常错误是java.lang ...

最新文章

  1. 上机7 java异常处理,Java之异常处理【7】
  2. 图解10大机器学习算法
  3. IE8采用IE7模式
  4. Openjudge-计算概论(A)-计算三角形面积
  5. (一)开始使用混合边缘AI进行面部识别
  6. region实现大纲效果
  7. noip2010乌龟棋解题报告
  8. ActiveMQ-1 安装以及WebUI的配置
  9. ENVI5.3.1使用Landsat 8影像进行监督分类实例操作
  10. 国产ERP有没有机会击败SAP ?
  11. Error setting non null for parameter #2 with JdbcType null . Try setting a different JdbcType for th
  12. 鸿蒙系统之铠甲勇士,国漫几部经典机甲排行,铠甲勇士落榜,第一名竟是抄袭漫威...
  13. 角点检测的几种基本方法
  14. SYN攻击原理以及防范技术
  15. JPA教程(第五章)
  16. uniapp Android11及以上系统的手机需要使用FileProvider方式分享
  17. android 银行卡绑定银行卡,一种基于Android、iOS系统的移动端银行卡识别方法,让银行卡绑定这一行为变得更轻松...
  18. Unity 半透物体(Transparent)写入摄像机深度图(解决半透物体景深不生效)
  19. 国家电网 Sg186工程中GIS平台的选型
  20. Java面试流程及核心面试题

热门文章

  1. 施工日志管理软件app_康智颐app下载-康智颐客户端下载v1.4.9 安卓官方版
  2. java中怎样判断余数为3,Java的基础语法(三): 运算符
  3. centos6 rpm安装mysql_Centos6下rpm安装MySQL5.6
  4. 阿里云文件存储和自我管理的云解决方案的TCO比较
  5. vrrp preempt mode configed in keepalived conf
  6. IOS UiView frame哪里来?
  7. 利用stdin stdout stderr及POSIX-linux机制重定向写日志
  8. 《文献检索》随感-2003年10月24日
  9. IT-标准化-系列-7.使用VPC+VNC管理虚拟机
  10. [转]linux下fms2流媒体服务器搭建之五-----flv播放器制作篇