java 服务器 文件写入文件_java 从服务器下载文件并保存到本地
昨天在做一个项目时,用到了从服务器上下载文件并保存到本地的知识,以前也没有接触过,昨天搞了一天,这个小功能实现了,下面就简单的说一下实现过程;
1.基础知识
当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步:
(1)客户端发起一个url请求,获取连接对象。
(2)服务器解析url,并且将指定的资源返回一个输入流给客户。
(3)建立存储的目录以及保存的文件名。
(4)输出了写数据。
(5)关闭输入流和输出流。
2.实现代码的方法
/**
* @功能 下载临时素材接口
* @param filePath 文件将要保存的目录
* @param method 请求方法,包括POST和GET
* @param url 请求的路径
* @return
*/
public static File saveUrlAs(String url,String filePath,String method){
//System.out.println("fileName---->"+filePath);
//创建不同的文件夹目录
File file=new File(filePath);
//判断文件夹是否存在
if (!file.exists())
{
//如果文件夹不存在,则创建新的的文件夹
file.mkdirs();
}
FileOutputStream fileOut = null;
HttpURLConnection conn = null;
InputStream inputStream = null;
try
{
// 建立链接
URL httpUrl=new URL(url);
conn=(HttpURLConnection) httpUrl.openConnection();
//以Post方式提交表单,默认get方式
conn.setRequestMethod(method);
conn.setDoInput(true);
conn.setDoOutput(true);
// post方式不能使用缓存
conn.setUseCaches(false);
//连接指定的资源
conn.connect();
//获取网络输入流
inputStream=conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(inputStream);
//判断文件的保存路径后面是否以/结尾
if (!filePath.endsWith("/")) {
filePath += "/";
}
//写入到文件(注意文件保存路径的后面一定要加上文件的名称)
fileOut = new FileOutputStream(filePath+"123.png");
BufferedOutputStream bos = new BufferedOutputStream(fileOut);
byte[] buf = new byte[4096];
int length = bis.read(buf);
//保存文件
while(length != -1)
{
bos.write(buf, 0, length);
length = bis.read(buf);
}
bos.close();
bis.close();
conn.disconnect();
} catch (Exception e)
{
e.printStackTrace();
System.out.println("抛出异常!!");
}
return file;
}
3.代码测试类(主函数)
/**
* @param args
*/
public static void main(String[] args)
{
String photoUrl = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
String fileName = photoUrl.substring(photoUrl.lastIndexOf("/"));
//System.out.println("fileName---->"+fileName);
String filePath = "d:";
File file = saveUrlAs(photoUrl, filePath + fileName,"GET");
System.out.println("Run ok!/n
Get URL file " + file);
}
java 服务器 文件写入文件_java 从服务器下载文件并保存到本地相关推荐
- java下载的文件不完整_JAVA 解决FTP下载文件不完整问题
在使用java的ftp下载服务器上的文件获取文件的byte[],然后对byte进行加密传输时, 注意是要获取byte[],而不是下载文件到本地: 发现下载的byte[]大小总是小于文件实际大小,并且下 ...
- java文件客户端下载_使用Java写一个minio的客户端上传下载文件
标签:color ati tty java system wired format media param 前言: 确保已经安装了minio的服务端 代码: pom.x ...
- js下载文件 java_[Java教程]使用js实现点击按钮下载文件
[Java教程]使用js实现点击按钮下载文件 0 2016-11-11 19:02:54 有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方 ...
- 前端将二进制数据流转为文件_前端通过二进制流下载文件
JS下载文件两种方式总结: 下载文件主要分为两种形式,具体使用哪种方式取决于后台: 1.如果后台服务器的静态目录有可供下载的静态资源,后台接口返回文件路径,直接window.location.href ...
- python下载网页上的文件_用Python下载一个网页保存为本地的HTML文件实例
Python打开网页并另存为静态html怎么实现 如何用python把网页上的文本内容保存下来那一世的长情,谱一首长相思,冷了多少凄凉,漫了多少青丝,化作多少烟雨,吹散多少世间情!徒悲,奈何,这一世, ...
- 如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...
我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库. 比如我们要下载山东大学新闻网的一个页面,该网页如下: 实现代码如下: import urllib.request ...
- 怎么在python下载网站内容-用Python下载一个网页保存为本地的HTML文件实例
我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库. 比如我们要下载山东大学新闻网的一个页面,该网页如下: 实现代码如下: import urllib.request ...
- msf后渗透之文件交互指令、上传下载文件、屏幕截图、键盘记录、创建账户、音频录像和提权(上)
目录 1.文件交互指令 2.上传下载文件(windows) 3.屏幕截图(windows) 4.键盘记录(windows) 1.先启动记录keyscan_start 2.显示键盘输入内容keyscan ...
- 怎么修改服务器文件写入权限,怎么修改服务器本地写入权限设置
怎么修改服务器本地写入权限设置 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...
- java给txt文件写入内容_java代码 如何向TXT文件写入内容?
展开全部 向txt文件写入内容基本思路就是获得一个62616964757a686964616fe59b9ee7ad9431333337613134file对象,新建一个txt文件,打开I/O操作流,使 ...
最新文章
- 即将上线的Hive服务器面临的一系列填坑笔记
- 剪切粘贴时总是上次的内容_Quicker 1.4版本更新内容
- WINCE中设置FTP用户密码
- 论文浅尝 | 通过文本到文本神经问题生成的机器理解
- java开发技术心得_Java开发核心技术面试心得分析
- python 偏函数装饰器
- 从 4 个月到 7 天:Netflix 开源自家框架 Metaflow,性能像坐上了火箭
- 0基础学python做什么工作好-零基础自学多久Python可以找什么工作
- 计算机工程师的社会责任感,工程师的社会责任
- linux中安装openoffice
- 如何制作GIF表情包,GIF怎么做
- 红孩儿编辑器的模块设计6
- 在ios中,input唤出软键盘中‘换行’转‘搜索’、‘前往’,及直接唤醒数字键盘的实现(vue)
- 数据库实验--存储过程实验
- 掌薪阁分享:一个人人可做,汇聚了全网不同层次的网赚项目!
- 全国三级地区(省市县)数据表设计
- 易语言可以编译c语言,刷屏软件?其实易语言也可以做这种软件
- antdPro创建的项目网络请求统一处理
- java 图片相似搜索_java获取两张图片的相似度
- java静态方法lg(),接受一个整形参数N,返回不大于log2N的最大整数不使用Math方法。
热门文章
- leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)
- hadoop元数据合并过程_Hadoop元数据合并异常及解决方法
- 铁矿怎么来_铁矿期货今日创出新高908.5点 为何老有人错过行情
- java List实体排序
- kotlin学习之数据类(七)
- JUC原子类-数组类型(三)
- jQuery的事件1——on,one
- 【简便解法】1084 Broken Keyboard (20 分)_16行代码AC
- 【最新合集】编译原理习题(含答案)_答案全集_MOOC慕课 哈工大陈鄞
- 27行代码AC_迷宫 2017年第八届蓝桥杯A组第一题(暴力、仿迷宫)