登录 |  注册
首页 >  编程语言 >  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();
	}
}


原文链接: https://www.yukx.com/javadev/article/details/2096.html 优科学习网Java实现文件下载功能

下一课程>>
推荐文章
  • 如何看到老年代、新生代的对象有哪些呢?MAT是分析dump的神器(顺便吐槽:当然也是吃内存卡机器的怪兽)。通常我们会在出现fullGC时dump下堆内存,然后分析FullGC的原因。那如何获知整个堆内存里,有哪些对象在新生代、哪些在老年代呢?一个典型的应用场景是:出现了耗时超预期的YoungGC,我
  • 面向服务的架构(SOA)是一种软件开发方法,它使用称为服务的软件组件来创建业务应用程序。每项服务提供一种业务能力,并且服务也可以跨平台和语言相互通信。开发人员使用SOA来重用不同系统中的服务,或者组合几个独立的服务来执行复杂的任务。例如,一个组织中的多个业务流程需要用户身份验证功能。您可以创建一项身
  • 1.背景1.1什么是交互式推荐?交互式推荐是一种互动式实时推荐产品模块,主要通过理解用户需求、以互动的方式进行推荐。交互式推荐由Youtube在2018年提出,主要用于解决推荐系统的延迟和与用户互动偏弱的问题。从2021年下半年开始,美团外卖推荐技术团队在外卖首页Feed上持续进行探索,2022上半
  • 导读:老是出现堆内存不足,大量FullGC深知出现内存溢出应该怎么办,怎样通过排查找到源头分析来解决问题?正文:我们有个新服务上线运行一段时间后,老是出现堆内存不足,大量出现FullGC,有些实例甚至出现内存溢出错误:java.lang.OutOfMemoryError:Javaheapspace但
  • 其实强引用、软引用、弱引用、虚引用这四个概念非常简单好记。在开头先总结一下这四个引用的特点吧。强引用:gc时不会回收软引用:只有在内存不够用时,gc才会回收弱引用:只要gc就会回收虚引用:是否回收都找不到引用的对象,仅用于管理直接内存接下来详细看看这四种引用,结合代码,深刻的体会一下。强引用即我们平
  • 在Linux中,CPU主要用于中断、内核以及用户进程的任务处理,优先级为中断内核用户进程,在学习如何分析CPU消耗状况前。先要掌握三个重要的概念1、上下文切换每个CPU在同一时间只能执行一个线程,Linux采用的是抢占式调度,即为每个线程分配一定的执行时间,当到达执行时间、线程中有IO阻塞或高级优先
学习大纲