昨天在做一个项目时,用到了从服务器上下载文件并保存到本地的知识,以前也没有接触过,昨天搞了一天,这个小功能实现了,下面就简单的说一下实现过程;

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 从服务器下载文件并保存到本地相关推荐

  1. java下载的文件不完整_JAVA 解决FTP下载文件不完整问题

    在使用java的ftp下载服务器上的文件获取文件的byte[],然后对byte进行加密传输时, 注意是要获取byte[],而不是下载文件到本地: 发现下载的byte[]大小总是小于文件实际大小,并且下 ...

  2. java文件客户端下载_使用Java写一个minio的客户端上传下载文件

    标签:color   ati   tty   java   system   wired   format   media   param 前言: 确保已经安装了minio的服务端 代码: pom.x ...

  3. js下载文件 java_[Java教程]使用js实现点击按钮下载文件

    [Java教程]使用js实现点击按钮下载文件 0 2016-11-11 19:02:54 有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方 ...

  4. 前端将二进制数据流转为文件_前端通过二进制流下载文件

    JS下载文件两种方式总结: 下载文件主要分为两种形式,具体使用哪种方式取决于后台: 1.如果后台服务器的静态目录有可供下载的静态资源,后台接口返回文件路径,直接window.location.href ...

  5. python下载网页上的文件_用Python下载一个网页保存为本地的HTML文件实例

    Python打开网页并另存为静态html怎么实现 如何用python把网页上的文本内容保存下来那一世的长情,谱一首长相思,冷了多少凄凉,漫了多少青丝,化作多少烟雨,吹散多少世间情!徒悲,奈何,这一世, ...

  6. 如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...

    我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库. 比如我们要下载山东大学新闻网的一个页面,该网页如下: 实现代码如下: import urllib.request ...

  7. 怎么在python下载网站内容-用Python下载一个网页保存为本地的HTML文件实例

    我们可以用Python来将一个网页保存为本地的HTML文件,这需要用到urllib库. 比如我们要下载山东大学新闻网的一个页面,该网页如下: 实现代码如下: import urllib.request ...

  8. msf后渗透之文件交互指令、上传下载文件、屏幕截图、键盘记录、创建账户、音频录像和提权(上)

    目录 1.文件交互指令 2.上传下载文件(windows) 3.屏幕截图(windows) 4.键盘记录(windows) 1.先启动记录keyscan_start 2.显示键盘输入内容keyscan ...

  9. 怎么修改服务器文件写入权限,怎么修改服务器本地写入权限设置

    怎么修改服务器本地写入权限设置 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  10. java给txt文件写入内容_java代码 如何向TXT文件写入内容?

    展开全部 向txt文件写入内容基本思路就是获得一个62616964757a686964616fe59b9ee7ad9431333337613134file对象,新建一个txt文件,打开I/O操作流,使 ...

最新文章

  1. 即将上线的Hive服务器面临的一系列填坑笔记
  2. 剪切粘贴时总是上次的内容_Quicker 1.4版本更新内容
  3. WINCE中设置FTP用户密码
  4. 论文浅尝 | 通过文本到文本神经问题生成的机器理解
  5. java开发技术心得_Java开发核心技术面试心得分析
  6. python 偏函数装饰器
  7. 从 4 个月到 7 天:Netflix 开源自家框架 Metaflow,性能像坐上了火箭
  8. 0基础学python做什么工作好-零基础自学多久Python可以找什么工作
  9. 计算机工程师的社会责任感,工程师的社会责任
  10. linux中安装openoffice
  11. 如何制作GIF表情包,GIF怎么做
  12. 红孩儿编辑器的模块设计6
  13. 在ios中,input唤出软键盘中‘换行’转‘搜索’、‘前往’,及直接唤醒数字键盘的实现(vue)
  14. 数据库实验--存储过程实验
  15. 掌薪阁分享:一个人人可做,汇聚了全网不同层次的网赚项目!
  16. 全国三级地区(省市县)数据表设计
  17. 易语言可以编译c语言,刷屏软件?其实易语言也可以做这种软件
  18. antdPro创建的项目网络请求统一处理
  19. java 图片相似搜索_java获取两张图片的相似度
  20. java静态方法lg(),接受一个整形参数N,返回不大于log2N的最大整数不使用Math方法。

热门文章

  1. leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)
  2. hadoop元数据合并过程_Hadoop元数据合并异常及解决方法
  3. 铁矿怎么来_铁矿期货今日创出新高908.5点 为何老有人错过行情
  4. java List实体排序
  5. kotlin学习之数据类(七)
  6. JUC原子类-数组类型(三)
  7. jQuery的事件1——on,one
  8. 【简便解法】1084 Broken Keyboard (20 分)_16行代码AC
  9. 【最新合集】编译原理习题(含答案)_答案全集_MOOC慕课 哈工大陈鄞
  10. 27行代码AC_迷宫 2017年第八届蓝桥杯A组第一题(暴力、仿迷宫)