代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
网络下载文件(图片,样式文件,文档等)
作者:
Suppender
/ 发布于
2015/7/9
/
548
Java网络下载文件,可以下载图片,静态资源,文档等,自动过滤重复下载项。希望大家多提宝贵意见!请使用jdk1.7以上版本进行编译
/** * @Title 方法标题: saveBinaryFile * @Description 描述: 从网络中下载文件 * @param @param url * @param @param folderName 存放的文件夹名称 * @param @throws IOException 设定文件 * @return void 返回类型 * @throws * @author: 青柠Loft www.rmworking.com/blog */ public static boolean saveBinaryFile(URL url , String folderName) throws IOException{ URLConnection uc = url.openConnection(); //超时响应时间为5秒 uc.setConnectTimeout(3 * 1000); String contentType = uc.getContentType(); //保存内容类型 int contentLength = uc.getContentLength(); //保存内容长度 if(contentType.equals("") || contentType == null){ System.out.println("文件下载失败了。。。"); return false; } if(contentType.equals("text/") || contentLength == -1){ System.out.println("这不是一个文件。。。"); return false; } String filename = url.getFile(); filename = filename.substring(filename.lastIndexOf('/') + 1); String filePathName = folderName + filename; Path path = Paths.get(folderName); if (!path.toFile().isFile()) { //判断文件夹是否存在 if(!path.toFile().exists()){ System.out.println("创建新文件夹。。。"); // 创建文件夹 path.toFile().mkdir(); }else{ //判断文件是否存在于文件夹中 if(compareToFile(folderName, filename)){ System.out.println("文件已经存在,比较大小中。。。原始大小:" + getFileLength(filePathName) + " 所下文件大小为:" + contentLength); //与文件夹中的文件进行大小比对,如果不一样,则重新下载 if(contentLength == getFileLength(filePathName)){ return false; } } } } System.out.println(contentType + " " + contentLength); try(InputStream raw = uc.getInputStream()){ InputStream in = new BufferedInputStream(raw); byte[] data = new byte[contentLength]; int offset = 0; //检测是否填入全部内容 while (offset < contentLength) { int bytesRead = in.read(data , offset , data.length - offset); if(bytesRead == -1) break; offset += bytesRead; } if(offset != contentLength){ throw new IOException("只读属性。。。"); } //输出文件 try(FileOutputStream fout = new FileOutputStream(filePathName)){ fout.write(data); fout.flush(); return true; } }catch (Exception e) { e.printStackTrace(); return false; } } /** * @Title 方法标题: getFolderFileNumber * @Description 描述: 获取文件夹中文件的数量 * @param @param folderName 文件夹名称 * @param @return 设定文件 * @return int 返回类型 * @throws * @author: 青柠Loft www.rmworking.com/blog */ public static int getFolderFileNumber(String folderName){ Path path = Paths.get(folderName); if (isFile(folderName)) { String[] filesNames = path.toFile().list(); if(filesNames.length > 0){ return path.toFile().list().length; } } return 0; } /** * @Title 方法标题: compareToFile * @Description 描述: 检测指定的文件在指定的文件夹中是否存在 * @param @param folderName 文件夹名称 * @param @param fileName 文件名称 * @param @return 设定文件 * @return boolean 返回类型 * @throws * @author: 青柠Loft www.rmworking.com/blog */ public static boolean compareToFile(String folderName , String fileName){ Path path = Paths.get(folderName); if (isFile(folderName)) { String[] filesNames = path.toFile().list(); if(fileName != null && !fileName.equals("")){ for (String str : filesNames) { if(Objects.equals(str, fileName)){ return true; } } } } return false; } /** * @Title 方法标题: isFile * @Description 描述: 判断文件夹是否存在 * @param @param folderName * @param @return 设定文件 * @return boolean 返回类型 * @throws * @author: 青柠Loft www.rmworking.com/blog */ public static boolean isFile(String folderName){ Path path = Paths.get(folderName); if (!path.toFile().isFile()) { //判断文件夹是否存在 if(path.toFile().exists()){ return true; } } return false; } /** * @Title 方法标题: getFileLength * @Description 描述: 获取指定文件大小 * @param @param fileName * @param @return 设定文件 * @return Long 返回类型 * @throws * @author: 青柠Loft www.rmworking.com/blog */ public static Long getFileLength(String fileName){ Path path = Paths.get(fileName); return path.toFile().length(); } public static void main(String[] args) throws IOException { URL url = new URL("http://www.51cto.com/images/home/js/jquery.SuperSlide.js"); saveBinaryFile(url , "/Users/rm/Downloads/"); }
试试其它关键字
网络下载
下载文件
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Suppender
贡献的其它代码
(
4
)
.
在指定的对象上,在指定的窗口,打开指定链接
.
网络下载文件(图片,样式文件,文档等)
.
批量清除BOM头
.
Android安卓加载大图片,防止内存溢出
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3