private final static String baseDir=System.getProperty("user.dir")+"/wangzi/";// 主文件夹
private final static String fileDir=baseDir+"/file/";// 文件 文件夹
private final static String zipUrl=baseDir+"/zip/";// zip文件夹
public CommonResult<Object>Synchronize()throws Exception{if(!new File(baseDir).isDirectory()){//创建你的临时目录
new File(baseDir).mkdirs();}if(!new File(fileDir).isDirectory()){//创建临时文件目录
new File(fileDir).mkdirs();}if(!new File(zipUrl).isDirectory()){//创建生成zip目录
new File(zipUrl).mkdirs();}try{
//查出你的List
List<T>list=listService.findList();writeFile("EOCashierWay.json",list);//写出文件名称,和内容
FileZip.zip(fileDir,zipUrl+"T.zip");// 文件打包
FileUtil.download(response,"T.zip",zipUrl+"T.zip");// 文件下载
}catch(Exception e){e.printStackTrace();}finally{FileUtil.deleteDir(new File(baseDir));//删除临时文件夹
}return commonResult;}
/**
* 写出临时文件
*
* @param fileUrl
* @param fileName
* @param t
* @throws Exception
*/
public<T>void writeFile(String fileName,T t)throws Exception{OutputStreamWriter out=new OutputStreamWriter(new FileOutputStream(fileDir+fileName),"UTF-8");System.out.println(JSON.toJSONString(t));out.write(JSON.toJSONString(t));out.flush();out.close();}
/**
* 删除文件夹
* @param path
*
*/
public static void deleteDir(File path){if(!path.exists())return;if(path.isFile()){path.delete();return;}File[]files=path.listFiles();for(int i=0;i<files.length;i++){deleteDir(files[i]);}path.delete();}
/**
* java压缩成zip 需要打包的文件夹 生成zip文件的位置 目录+T.zip
*/
public class FileZip {
/**
* @param inputFileName
* 你要压缩的文件夹(整个完整路径)
* @param zipFileName
* 压缩后的文件(整个完整路径)
*/
public static void zip(String inputFileName, String zipFileName) throws Exception {
zip(zipFileName, new File(inputFileName));
}
private static void zip(String zipFileName, File inputFile) throws Exception {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out, inputFile, "");
out.flush();
out.close();
}
private static void zip(ZipOutputStream out, File f, String base) throws Exception {
if (f.isDirectory()) {
File[] fl = f.listFiles();
out.putNextEntry(new ZipEntry(base + "/"));
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + fl[i].getName());
}
} else {
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
// System.out.println(base);
while ((b = in.read()) != -1) {
out.write(b);
}
in.close();
}
}
}
/**
*
* @Description: TODO(文件下载)
* @param response
* @param fileName 下载文件名称
* @param filePath 下载文件路径
* @throws IOException
* @author tianyi
* @date 2015年8月26日 上午11:41:55
* @version V1.0
*/
public static void download(HttpServletResponse response, String fileName, String filePath) throws IOException{
FileInputStream fis = null;
BufferedInputStream buff = null;
try {
File file = new File(filePath);
response.setContentType("application/x-msdownload");//设置response的编码方式
response.setContentLength((int)file.length());//写明要下载的文件的大小
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "iso-8859-1")); //解决中文乱码
//读出文件到i/o流
fis = new FileInputStream(file);
buff = new BufferedInputStream(fis);
byte[] bytes = new byte[1024];//相当于我们的缓存
long k = 0;//该值用于计算当前实际下载了多少字节
OutputStream os = response.getOutputStream();//从response对象中得到输出流,准备下载
//开始循环下载
while(k < file.length()){
int j = buff.read(bytes, 0, 1024);
k += j;
os.write(bytes, 0, j);//将b中的数据写到客户端的内存
}
os.flush();//将写入到客户端的内存的数据,刷新到磁盘
os.close();
buff.close();
buff = null;
fis.close();
fis = null;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if(buff != null){
buff.close();
buff = null;
}
if(fis != null){
fis.close();
fis = null;
}
}
}
private final static String fileDir=baseDir+"/file/";// 文件 文件夹
private final static String zipUrl=baseDir+"/zip/";// zip文件夹
public CommonResult<Object>Synchronize()throws Exception{if(!new File(baseDir).isDirectory()){//创建你的临时目录
new File(baseDir).mkdirs();}if(!new File(fileDir).isDirectory()){//创建临时文件目录
new File(fileDir).mkdirs();}if(!new File(zipUrl).isDirectory()){//创建生成zip目录
new File(zipUrl).mkdirs();}try{
//查出你的List
List<T>list=listService.findList();writeFile("EOCashierWay.json",list);//写出文件名称,和内容
FileZip.zip(fileDir,zipUrl+"T.zip");// 文件打包
FileUtil.download(response,"T.zip",zipUrl+"T.zip");// 文件下载
}catch(Exception e){e.printStackTrace();}finally{FileUtil.deleteDir(new File(baseDir));//删除临时文件夹
}return commonResult;}
/**
* 写出临时文件
*
* @param fileUrl
* @param fileName
* @param t
* @throws Exception
*/
public<T>void writeFile(String fileName,T t)throws Exception{OutputStreamWriter out=new OutputStreamWriter(new FileOutputStream(fileDir+fileName),"UTF-8");System.out.println(JSON.toJSONString(t));out.write(JSON.toJSONString(t));out.flush();out.close();}
/**
* 删除文件夹
* @param path
*
*/
public static void deleteDir(File path){if(!path.exists())return;if(path.isFile()){path.delete();return;}File[]files=path.listFiles();for(int i=0;i<files.length;i++){deleteDir(files[i]);}path.delete();}
/**
* java压缩成zip 需要打包的文件夹 生成zip文件的位置 目录+T.zip
*/
public class FileZip {
/**
* @param inputFileName
* 你要压缩的文件夹(整个完整路径)
* @param zipFileName
* 压缩后的文件(整个完整路径)
*/
public static void zip(String inputFileName, String zipFileName) throws Exception {
zip(zipFileName, new File(inputFileName));
}
private static void zip(String zipFileName, File inputFile) throws Exception {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out, inputFile, "");
out.flush();
out.close();
}
private static void zip(ZipOutputStream out, File f, String base) throws Exception {
if (f.isDirectory()) {
File[] fl = f.listFiles();
out.putNextEntry(new ZipEntry(base + "/"));
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + fl[i].getName());
}
} else {
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
// System.out.println(base);
while ((b = in.read()) != -1) {
out.write(b);
}
in.close();
}
}
}
/**
*
* @Description: TODO(文件下载)
* @param response
* @param fileName 下载文件名称
* @param filePath 下载文件路径
* @throws IOException
* @author tianyi
* @date 2015年8月26日 上午11:41:55
* @version V1.0
*/
public static void download(HttpServletResponse response, String fileName, String filePath) throws IOException{
FileInputStream fis = null;
BufferedInputStream buff = null;
try {
File file = new File(filePath);
response.setContentType("application/x-msdownload");//设置response的编码方式
response.setContentLength((int)file.length());//写明要下载的文件的大小
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "iso-8859-1")); //解决中文乱码
//读出文件到i/o流
fis = new FileInputStream(file);
buff = new BufferedInputStream(fis);
byte[] bytes = new byte[1024];//相当于我们的缓存
long k = 0;//该值用于计算当前实际下载了多少字节
OutputStream os = response.getOutputStream();//从response对象中得到输出流,准备下载
//开始循环下载
while(k < file.length()){
int j = buff.read(bytes, 0, 1024);
k += j;
os.write(bytes, 0, j);//将b中的数据写到客户端的内存
}
os.flush();//将写入到客户端的内存的数据,刷新到磁盘
os.close();
buff.close();
buff = null;
fis.close();
fis = null;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if(buff != null){
buff.close();
buff = null;
}
if(fis != null){
fis.close();
fis = null;
}
}
}