登录 |  注册
首页 >  编程语言 >  Java常用开发工具类案例代码 >  Java实现文件下载功能

Java实现文件下载功能

在开发过程中,有时需要实现文档的下载功能。文档的下载功能涉及到了java IO流操作的基础知识,下面本文介绍如何使用java来实现后台文档下载功能。

package com.yukx.bak;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class ImageUtils {
	/**
	 * @param urlString
	 * @return 文件在网站的路径
	 * @throws IOException 
	 * @throws Exception
	 */
	public static String download(String urlString) throws IOException{
		FileOutputStream os = null;
		InputStream is = null;
		StringBuilder netfileName = new StringBuilder();
		try {
			// 构造URL
			URL url = new URL(urlString);
			// 打开连接
			URLConnection con = url.openConnection();
			// 输入流
			is = con.getInputStream();
			// 1K的数据缓冲
			byte[] bs = new byte[1024];
			// 读取到的数据长度
			int len;
			//文件后缀
			String fileSufix = urlString.substring(urlString.lastIndexOf("."));
			String fileName = "yukx测试文件名";
			// 输出的文件流
			StringBuilder localFile = new StringBuilder();
			localFile.append("F:\\images\\");
			//校验并创建文件夹
			File direct = new File(localFile.toString());
			if (!direct.exists()) {
				direct.mkdirs();
			}
			// 输出的文件流
			localFile.append(fileName).append(fileSufix);
			File file = new File(localFile.toString());
			os = new FileOutputStream(file, true);
			// 开始读取
			while ((len = is.read(bs)) != -1) {
				os.write(bs, 0, len);
			}
			//返回文件名
			netfileName.append(fileName).append(fileSufix);

		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		} finally {
			//注意关闭文件流,防止内存溢出
			if (os != null) {
				os.close();
			}
			if (is != null) {
				is.close();
			}
		}
		return netfileName.toString();
	}
}


下一篇: Java实现文件写入功能
推荐文章
  • 分库分表大家可能听得多了,但读扩散问题大家了解吗?这里涉及到几个问题。分库分表是什么?读扩散问题是什么?分库分表为什么会引发读扩散问题?怎么解决读扩散问题?这些问题还是比较有意思的。相信兄弟们也一定有机会遇到哈哈哈。我们先从分库分表的话题聊起吧。分库分表我们平时做项目开发。一开始,通常都先用一张数据
  •    目前支持I/O多路复用的系统调用有  select,pselect,poll,epoll,I/O多路复用就是 通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 但select,pselect,poll,epoll本质上都是
  • 架构师在进行系统设计时,遵循一套复杂且综合的方法论,主要包括以下核心步骤:需求分析:理解并明确业务需求是架构设计的第一步。架构师需要与各利益相关者深入沟通,收集和分析业务需求、性能需求、安全性需求、扩展性需求等。领域建模:基于需求分析,构建抽象的业务模型或数据模型,明确系统的边界、核心实体及其关系。
  • 根据阿里交易型业务的特点,以及在双十一这样业内罕有的需求推动下,我们在官方的MySQL基础上增加了非常多实用的功能、性能补丁。而在使用MySQL的过程中,数据一致性是绕不开的话题之一。本文主要从阿里巴巴“去IOE”的后时代讲起,向大家简单介绍下我们过去几年在MySQL数据一致性上的努力和实践,以及目
  • 随着深度学习在图像、语言、广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用。而在广告CTR预估方面,新模型也是层出不穷:WideandDeep、DeepCrossNetwork、DeepFM、xDeepFM,美团很多篇深度学习博客也做了详细的介绍。但是,当
  • 1.背景搜索优化问题,是个典型的AI应用问题,而AI应用问题首先是个系统问题。经历近10年的技术积累和沉淀,美团搜索系统架构从传统检索引擎升级转变为AI搜索引擎。当前,美团搜索整体架构主要由搜索数据平台、在线检索框架及云搜平台、在线AI服务及实验平台三大体系构成。在AI服务及实验平台中,模型训练平台
学习大纲