import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
public class FileHelper {
static File file ;
/**
* @删除文件
* input 输入 output 输出
* */
public static boolean deleteFile(String url){
boolean flag = false;
try{
if(null == file){
file = new File(url);
if(file.isFile()){
if(file.canWrite()){
file.delete();
}
flag = true;
}
}else{
if(url == file.getPath()){
file.delete();
flag = true;
}
}
}catch(Exception e){
flag = false ;
e.printStackTrace();
}finally{
file = null;
System.gc();
}
return flag;
}
/**
* 新建目录
* @param folderPath String 如 c:/fqf
* @return boolean
*/
public static void newFolder(String folderPath) {
try {
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
if (!myFilePath.exists()) {
myFilePath.mkdir();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* 复制单个文件
* @param oldPath String 原文件路径 如:c:/fqf.txt
* @param newPath String 复制后路径 如:f:/fqf.txt
* @return boolean
*/
public static void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
fs.write(buffer, 0, byteread);
}
inStream.close();
fs.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* 使用文件通道的方式复制文件
* @param s 源文件
* @param t 复制到的新文件
*/
public static void fileChannelCopy(String srcPath,String outpath) {
File s = new File(srcPath);
File t = new File(outpath);
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(s);
fo = new FileOutputStream(t);
in = fi.getChannel();//得到对应的文件通道
out = fo.getChannel();//得到对应的文件通道
in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 上传文件
* @param upFile 上传文件
* @param targetFile 目标文件
* @param b
* @return
*/
public static boolean fileUpload(File upFile , File targetFile , byte[] b){
InputStream is = null ;
OutputStream os = null ;
try{
is = new FileInputStream(upFile);
os= new FileOutputStream(targetFile);
int length = 0;
while((length = is.read(b))>0){
os.write(b, 0, length);
}
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
try {
if(null != is){
is.close();
}if(null != os){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
/**
* 删除文件
* @param f
* @return
*/
public static boolean deleteFile(File f){
if (f.isFile())
f.delete();
return true;
}
/**
* 删除文件夹
* @param f
* @return
*/
public static boolean deleteDir(File f){
if(f.isDirectory()){
File[] files = f.listFiles();
for(int i=0;i
if(files[i].isDirectory()) deleteDir(files[i]);
else deleteFile(files[i]);
}
}
f.delete();
return true ;
}
/**
* 文件下载
* @param filePath 文件路径
* @param fileType 文件类型
* @param downName 下载文件名称
* @param response 响应
*/
public static void downLoadFile(String filePath,String fileType ,String downName,HttpServletResponse response){
OutputStream out = null;// 创建一个输出流对象
String headerStr = downName;
try{
InputStream is=new FileInputStream(filePath);
out = response.getOutputStream();//
headerStr =new String( headerStr.getBytes("gb2312"), "ISO8859-1" );//headerString为中文时转码
response.setHeader("Content-disposition", "attachment; filename="+ headerStr+"."+fileType);// filename是下载的xls的名,建议最好用英文
response.setContentType("application/msexcel;charset=GB2312");// 设置类型
response.setHeader("Pragma", "No-cache");// 设置头
response.setHeader("Cache-Control", "no-cache");// 设置头
response.setDateHeader("Expires", 0);// 设置日期头
// 输入流 和 输出流
int len = 0;
byte[] b = new byte[1024];
while ((len = is.read(b)) != -1) {
out.write(b, 0, len);
}
is.close();
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}