package com.lf.server.helper;
|
|
import com.lf.server.entity.data.MetaFileEntity;
|
import com.lf.server.service.data.UploaderService;
|
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.IOException;
|
import java.text.DecimalFormat;
|
import java.util.List;
|
|
/**
|
* 文件帮助类
|
* @author WWW
|
*/
|
public class FileHelper {
|
private final static String POINT = ".";
|
|
public static final double D1024 = 1024.0;
|
|
public static final double D1050 = 1050.0;
|
|
private final static Log log = LogFactory.getLog(FileHelper.class);
|
|
/**
|
* 获取文件名
|
* @param file
|
* @return
|
*/
|
public static String getFileName(String file) {
|
int idx = file.lastIndexOf(File.separator);
|
if (idx > -1) {
|
return file.substring(idx + 1);
|
}
|
|
return "";
|
}
|
|
/**
|
* 获取文件扩展名
|
*/
|
public static String getExtension(File file) {
|
if (file == null) {
|
return null;
|
}
|
|
String fileName = file.getName().toLowerCase();
|
|
int idx = fileName.lastIndexOf(POINT);
|
if (idx == -1) {
|
return "";
|
}
|
|
return fileName.substring(idx);
|
}
|
|
/**
|
* 获取文件扩展名
|
*/
|
public static String getExtension(String fileName) {
|
if (StringHelper.isEmpty(fileName)) {
|
return "";
|
}
|
|
int idx = fileName.lastIndexOf(POINT);
|
if (idx == -1) {
|
return "";
|
}
|
|
return fileName.substring(idx).toLowerCase();
|
}
|
|
/**
|
* 获取多用途互联网邮件扩展类型
|
*
|
* @param ext 文件扩展名
|
* @return
|
*/
|
public static String getMime(String ext) {
|
switch (ext) {
|
// 图片
|
case ".tif":
|
case ".tiff":
|
return "image/tiff";
|
case ".img":
|
return "application/x-img";
|
case ".gif":
|
return "image/gif";
|
case ".jpg":
|
case ".jpeg":
|
return "image/jpeg";
|
case ".png":
|
return "image/png";
|
// 音/视频
|
case ".mp3":
|
return "audio/mp3";
|
case ".mp4":
|
return "video/mpeg4";
|
case ".avi":
|
return "video/avi";
|
case ".mpg":
|
case ".mpeg":
|
return "video/mpg";
|
case ".wav":
|
return "audio/wav";
|
case ".wma":
|
return "audio/x-ms-wma";
|
case ".swf":
|
return "application/x-shockwave-flash";
|
case ".wmv":
|
return "video/x-ms-wmv";
|
case ".rm":
|
return "application/vnd.rn-realmedia";
|
case ".rmvb":
|
return "application/vnd.rn-realmedia-vbr";
|
// 网页
|
case ".js":
|
return "application/x-javascript";
|
case ".css":
|
return "text/css";
|
case ".asp":
|
return "text/asp";
|
case ".mht":
|
return "message/rfc822";
|
case ".jsp":
|
case ".htm":
|
case ".html":
|
case ".xhtml":
|
return "text/html";
|
case ".xml":
|
case ".svg":
|
return "text/xml";
|
// 文件
|
case ".txt":
|
return "text/plain";
|
case ".dbf":
|
return "application/x-dbf";
|
case ".mdb":
|
return "application/msaccess";
|
case ".pdf":
|
return "application/pdf";
|
case ".ppt":
|
case ".pptx":
|
return "application/x-ppt";
|
case ".doc":
|
case ".docx":
|
return "application/msword";
|
case ".xls":
|
case ".xlsx":
|
return "application/vnd.ms-excel";
|
case ".dgn":
|
return "application/x-dgn";
|
case ".dwg":
|
return "application/x-dwg";
|
case ".ext":
|
return "application/x-msdownload";
|
// 默认
|
default:
|
return "application/octet-stream";
|
}
|
}
|
|
/**
|
* 字节单位换算
|
*/
|
public static String formatByte(long byteNumber) {
|
double kbNumber = byteNumber / D1024;
|
if (kbNumber < D1024) {
|
return new DecimalFormat("#.##KB").format(kbNumber);
|
}
|
double mbNumber = kbNumber / D1024;
|
if (mbNumber < D1024) {
|
return new DecimalFormat("#.##MB").format(mbNumber);
|
}
|
double gbNumber = mbNumber / D1024;
|
if (gbNumber < D1024) {
|
return new DecimalFormat("#.##GB").format(gbNumber);
|
}
|
double tbNumber = gbNumber / D1024;
|
|
return new DecimalFormat("#.##TB").format(tbNumber);
|
}
|
|
/**
|
* byte转MB
|
*/
|
public static double sizeToMb(long size) {
|
if (size < D1050) {
|
return 0.001;
|
}
|
|
String str = String.format("%.3f", size / D1024 / D1024);
|
|
return Double.parseDouble(str);
|
}
|
|
/**
|
* 获取文件 MD5 码
|
*/
|
public static String getFileMd5(String filePath) throws IOException {
|
FileInputStream fileStream = new FileInputStream(filePath);
|
String md5 = DigestUtils.md5Hex(fileStream);
|
fileStream.close();
|
|
return md5;
|
}
|
|
/**
|
* 删除文件
|
*/
|
public static void deleteFiles(List<MetaFileEntity> list) {
|
try {
|
for (MetaFileEntity mf : list) {
|
File f = new File(mf.getPath());
|
if (f.exists()) {
|
f.delete();
|
}
|
}
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
}
|
}
|
}
|