package com.db.king.common.file;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.LineNumberReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.upload.FormFile;
/**
* 文件操作类
* @author DonBallKing
*
*/
public class FileUtil {
//上传单个文件
public static String uploadOneFile(FormFile formFile,String savePath){
String uploadMess = null;
if(formFile==null){
uploadMess = "没有取得要上传的文件!";
return uploadMess;
}
String fileName = formFile.getFileName();
try{
InputStream in = formFile.getInputStream();
File saveFile = new File(savePath + "/" + fileName);
if (saveFile.exists()) {
saveFile.delete();
}
OutputStream out = new FileOutputStream(saveFile);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
out.write(buffer, 0, bytesRead);
}
out.close();
in.close();
}catch(Exception ex){
ex.printStackTrace();
uploadMess = fileName+"文件上传失败!请重试!";
return uploadMess;
}
return null;
}
//上传单个文件
public static String uploadOneFile(FormFile formFile,String savePath,String saveName){
String uploadMess = null;
if(formFile==null){
uploadMess = "没有取得要上传的文件!";
return uploadMess;
}
String fileName = saveName;
if(fileName==null||fileName.equals("")){
fileName = formFile.getFileName();
}
try{
InputStream in = formFile.getInputStream();
File saveFile = new File(savePath + "/" + fileName);
if (saveFile.exists()) {
saveFile.delete();
}
OutputStream out = new FileOutputStream(saveFile);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
out.write(buffer, 0, bytesRead);
}
out.close();
in.close();
}catch(Exception ex){
ex.printStackTrace();
uploadMess = fileName+"文件上传失败!请重试!";
return uploadMess;
}
return null;
}
//下载文件,以zip压缩格式 (下载的文件后缀.csv)
public static String downLoadZipCsvFile(String filePath,String fileName,String saveName,String reportTitle,HttpServletResponse m_response){
String downLoadMess = null;
File file = new File(filePath+"/"+fileName);
if(!file.exists()){
downLoadMess = "文件不存在!";
return downLoadMess;
}
try{
m_response.setContentType("application/x-msdownload");
saveName += ".zip";
String saveDownLoadName = URLEncoder.encode(saveName,"UTF-8");
m_response.setHeader("Content-Disposition", "attachment;"+ " filename=" + saveDownLoadName);
LineNumberReader fReader = new LineNumberReader(new FileReader(file));
PrintWriter fWriter;
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
m_response.getOutputStream()));
out.setMethod(ZipOutputStream.DEFLATED);
fWriter = new PrintWriter(out);
String savesplitfilename = "";
long lineCount = 0;
long splitcount = 1;
while (true) {
savesplitfilename = "";
if (String.valueOf(splitcount).length() == 1)
savesplitfilename += "00" + splitcount;
else if (String.valueOf(splitcount).length() == 2)
savesplitfilename += "0" + splitcount;
else
savesplitfilename += splitcount;
savesplitfilename +=fileName;
ZipEntry entry = new ZipEntry(savesplitfilename);
out.putNextEntry(entry);
if(reportTitle!=null&&!"".equals(reportTitle)){
fWriter.println(reportTitle);
}
String bufferLine = null;
while ((bufferLine = fReader.readLine()) != null) {
fWriter.println(bufferLine);
lineCount++;
if (lineCount > 65500) {
lineCount = 0;
break;
}
}
fWriter.flush();
splitcount++;
if (bufferLine == null) {
break;
}
}
fReader.close();
fReader = null;
fWriter.close();
fWriter = null;
}catch(Exception ex){
ex.printStackTrace();
downLoadMess = ex.getMessage();
}
return downLoadMess;
}
public static String downLoadZipCsvFileAddCol(String filePath,String fileName,String saveName,String reportTitle,String colName,HttpServletResponse m_response){
String downLoadMess = null;
File file = new File(filePath+"/"+fileName);
if(!file.exists()){
downLoadMess = "文件不存在!";
return downLoadMess;
}
try{
m_response.setContentType("application/x-msdownload");
saveName += ".zip";
String saveDownLoadName = URLEncoder.encode(saveName,"UTF-8");
m_response.setHeader("Content-Disposition", "attachment;"+ " filename=" + saveDownLoadName);
LineNumberReader fReader = new LineNumberReader(new FileReader(file));
PrintWriter fWriter;
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
m_response.getOutputStream()));
out.setMethod(ZipOutputStream.DEFLATED);
fWriter = new PrintWriter(out);
String savesplitfilename = "";
long lineCount = 0;
long splitcount = 1;
while (true) {
savesplitfilename = "";
if (String.valueOf(splitcount).length() == 1)
savesplitfilename += "00" + splitcount;
else if (String.valueOf(splitcount).length() == 2)
savesplitfilename += "0" + splitcount;
else
savesplitfilename += splitcount;
savesplitfilename +=fileName;
ZipEntry entry = new ZipEntry(savesplitfilename);
out.putNextEntry(entry);
if(reportTitle!=null&&!"".equals(reportTitle)){
fWriter.println(reportTitle);
}
if(colName!=null&&!"".equals(colName)){
fWriter.println(colName);
}
String bufferLine = null;
while ((bufferLine = fReader.readLine()) != null) {
fWriter.println(bufferLine);
lineCount++;
if (lineCount > 65500) {
lineCount = 0;
break;
}
}
fWriter.flush();
splitcount++;
if (bufferLine == null) {
break;
}
}
fReader.close();
fReader = null;
fWriter.close();
fWriter = null;
}catch(Exception ex){
ex.printStackTrace();
downLoadMess = ex.getMessage();
}
return downLoadMess;
}
//下载文件,以普通格式
public static void downLoadNormalFile(String filePath,String fileName,String saveFileName,HttpServletResponse m_response){
File file = new File(filePath+"/"+fileName);
if(!file.exists()){
return ;
}
if(saveFileName==null||"".equals(saveFileName.trim())){
saveFileName = fileName;
}
try{
saveFileName = URLEncoder.encode(saveFileName,"UTF-8");
m_response.setContentType("application/x-msdownload");
m_response.setHeader("Content-Disposition", "attachment;"+ " filename=" + saveFileName);
ServletOutputStream sos = null;
FileInputStream fis = null;
byte[] b = new byte[1024];
fis = new FileInputStream(file);
sos = m_response.getOutputStream();
int len=0;
while ( (len = fis.read(b)) > 0) {
sos.write(b,0, len);
}
sos.close();
fis.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
分享到:
相关推荐
利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...
在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字
在Java编程语言中,文件上传和下载是网络应用中常见的功能,特别是在Web应用程序中。这里,我们将深入探讨如何实现这两个核心操作,以及相关的技术、工具和最佳实践。 首先,文件上传通常涉及到用户通过Web表单将...
高性能:通过合理利用多线程、缓冲区优化、流式处理等手段,有效提升了文件上传下载的速度和整体系统的性能。 健壮性:在异常处理方面,工具类充分考虑了网络不稳定、文件不存在、权限不足等各种可能的问题场景,...
在Java开发中,处理PDF文件是一项常见的任务,包括上传、下载、在线预览、删除以及修改等操作。这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**...
以上就是使用Java Socket编程实现文件上传涉及到的主要知识点,包括Socket通信机制、文件I/O、数据库操作、异常处理、多线程、安全性和性能优化等方面。理解并掌握这些内容,对于开发高效、可靠的文件上传系统至关...
### Java Spring Boot应用程序中实现文件上传和下载功能 在现代Web开发中,文件上传与下载是常见的需求之一。Spring Boot框架提供了简洁的方式帮助开发者轻松实现这些功能。本文将详细介绍如何在Spring Boot项目中...
利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...
在Java开发中,实现视频上传是一项常见的任务,尤其在构建Web应用或云存储服务时。这个Demo涵盖了几个关键的技术点,包括文件上传、视频转码和播放。让我们逐一深入探讨这些知识点。 首先,**文件上传**是Web应用...
Java实现COS(Cloud Object Storage)上传与下载是云计算服务中的常见操作,主要涉及对象存储的概念、Java SDK的使用以及文件I/O操作。COS通常由云服务提供商提供,用于存储大量的非结构化数据,如图片、视频、文档...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...
在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...
在Java编程环境中,实现Linux与Windows之间的文件上传和下载是一项常见的任务,特别是在分布式系统和跨平台应用中。本文将深入探讨如何使用Java技术实现在Linux和Windows之间进行文件的互传,以及创建一个HTML界面来...
Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...
Java对Samba进行上传与下载文件的技术主要涉及Java编程、Samba服务器以及jcifs库的使用。Samba是一个开源软件,允许Linux/Unix系统与Windows系统之间进行文件共享,而jcifs是Java的一个库,它提供了对SMB(Server ...
在Java编程环境中,...总的来说,Java与MongoDB的集成提供了丰富的功能,可以方便地实现文件的上传、下载、预览和打包下载。通过理解MongoDB的API和Java的IO流处理,开发者可以构建出高效且用户友好的文件管理系统。
在Java开发中,文件上传和下载是常见的功能需求,尤其...以上就是关于“Java实现文件上传与下载”以及使用Struts2框架进行操作的详细内容。理解并掌握这些知识点,将有助于在实际项目中实现高效、安全的文件管理功能。
在Java开发中,文件和图片的上传下载是常见的功能需求,尤其在Web应用中更为重要。本篇文章将详细探讨三种不同的实现方式,分别是使用JSP+Servlet、SmartUpload库以及Apache的FileUpload组件。 首先,我们来看第一...
例如,在线文档分享、用户资料上传、多媒体文件存储等方面,都需要通过Web端实现文件的上传与管理。然而,在Java Web开发中,并没有提供直接且高效的文件上传解决方案,因此开发者通常会选择一些开源库来辅助完成这...
以上就是关于“java实现图片下载和上传.zip”项目中的核心知识点,包括Spring、SpringMVC、MyBatis、Commons-FileUpload和Commons-IO的使用,以及在实际应用中需要考虑的安全性和性能优化措施。通过这些技术,开发者...