博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

服务器保存文件及文件的打包

Posted on 2018-11-22 11:26  菜鸟站  阅读(1391)  评论(0编辑  收藏  举报

//初始化文件夹
private void deleteUploadFiles(String rootDir){
File baseDirFile= new File(rootDir);
if (baseDirFile.exists()) {
File[] listFiles = baseDirFile.listFiles();
for (int i = 0; i < listFiles.length; i++) {
// 删除子文件
if (listFiles[i].isFile()) {
if (listFiles[i].exists() && listFiles[i].isFile()) {
if (listFiles[i].delete()) {
System.out.println("删除文件" + listFiles[i].getName() + "成功!");
}
}
}
}
}

}
//保存文件到服务器
//第一步
private String saveImgFile(File imageFile, String imageConfig,String subDir) throws Exception{
String saveFileName="";
saveFileName = UUID.randomUUID().toString().replace("-","") + "."+getFileExt(imageConfig);
String rootDir = ToHtmlUtil.CUSTMOERPATH;
String saveFilePath = rootDir + File.separator + subDir + File.separator + saveFileName;
File baseDirFile= new File(rootDir + File.separator + subDir);

if (!baseDirFile.exists()) {
baseDirFile.mkdirs();
}
FileInputStream fis= new FileInputStream(imageFile);
byte b[] = new byte[fis.available()];
fis.read(b);

FileOutputStream fos = new FileOutputStream(saveFilePath);
fos.write(b);
fos.close();
fis.close();
this.compressedFile( rootDir + File.separator + subDir, rootDir + File.separator+ subDir );//打包


return saveFileName;
}
//第2步
private String getFileExt(String filePath) {
String fileName = getFileName(filePath);
if (StringUtil.isEmpty(fileName)) {
return "";
}
String fileExt = "";
int idx = fileName.lastIndexOf('.');
if (idx >= 0 && idx < (fileName.length() - 1)) {
fileExt = fileName.substring(idx + 1, fileName.length());
}
return fileExt;
}
//第3步
private String getFileName(String filePath) {
File f = new File(filePath);
return f.getName();
}


/**
* @desc 文件夹生成指定格式的压缩文件,格式zip
* @param resourePath 文件夹
* @param targetPath 目的压缩文件保存路径
* @return void
* @throws Exception
*/
public void compressedFile(String resourcesPath,String targetPath) throws Exception{
File resourcesFile = new File(resourcesPath);//源文件
String targetName = resourcesFile.getName()+".zip";//目的压缩文件名
FileOutputStream outputStream = new FileOutputStream(targetPath+ File.separator +targetName);
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(outputStream));

this.createCompressedFile(out, resourcesFile, "");

out.close();
}

/**
* @desc 生成压缩文件。
* 文件/文件夹,使用递归,进行文件遍历、压缩
*
* @param out 输出流
* @param file 目标文件
* @return void
* @throws Exception
*/
private void createCompressedFile(ZipOutputStream out,File file,String dir) throws Exception{
//如果当前的是文件夹,则进行进一步处理
if(file.isDirectory()){
//得到文件列表信息
File[] files = file.listFiles();
//将文件夹添加到下一级打包目录
dir = dir.length() == 0 ? "" : dir +"/";
//循环将文件夹中的文件打包
for(int i = 0 ; i < files.length ; i++){
createCompressedFile(out, files[i], dir + files[i].getName());//递归处理
}
}
else{//当前的是文件,打包处理
String name = file.getName();
if (!name.contains("zip")) {
FileInputStream fis = new FileInputStream(file);
out.putNextEntry(new ZipEntry(dir));
//进行写操作
int j = 0;
byte[] buffer = new byte[1024];
while((j = fis.read(buffer)) > 0){
out.write(buffer,0,j);
}
//关闭输入流
fis.close();
}
}
}