实现文件上传和下载的Java类


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();
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值