//初始化文件夾
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();
}
}
}