首页>代码>springboot实现超级好用的windows+Linux可视化文件操作项目>/spring-boot-filemanager/src/main/java/org/shaofan/utils/FileUtils.java
package org.shaofan.utils;
import org.apache.commons.lang3.StringUtils;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.PosixFileAttributeView;
import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/**
* FileUtils on spring-boot-filemanager
*
* @author <a href="mailto:akhuting@hotmail.com">Alex Yang</a>
* @date 2016年08月25日 10:02
*/
public class FileUtils {
private static List<String> ExtsDocument = Arrays.asList
(
".doc", ".docx", ".docm",
".dot", ".dotx", ".dotm",
".odt", ".fodt", ".rtf", ".txt",
".html", ".htm", ".mht",
".pdf", ".djvu", ".fb2", ".epub", ".xps"
);
private static List<String> ExtsSpreadsheet = Arrays.asList
(
".xls", ".xlsx", ".xlsm",
".xlt", ".xltx", ".xltm",
".ods", ".fods", ".csv"
);
private static List<String> ExtsPresentation = Arrays.asList
(
".pps", ".ppsx", ".ppsm",
".ppt", ".pptx", ".pptm",
".pot", ".potx", ".potm",
".odp", ".fodp"
);
public static String getExtension(String fileName) {
if (StringUtils.INDEX_NOT_FOUND == StringUtils.indexOf(fileName, "."))
return StringUtils.EMPTY;
String ext = StringUtils.substring(fileName,
StringUtils.lastIndexOf(fileName, "."));
return StringUtils.trimToEmpty(ext);
}
public static String getFileName(String header) {
String[] tempArr1 = header.split(";");
String[] tempArr2 = tempArr1[2].split("=");
//获取文件名,兼容各种浏览器的写法
return tempArr2[1].substring(tempArr2[1].lastIndexOf("\\") + 1).replaceAll("\"", "");
}
public static String getPermissions(Path path) throws IOException {
PosixFileAttributeView fileAttributeView = Files.getFileAttributeView(path, PosixFileAttributeView.class);
PosixFileAttributes readAttributes = fileAttributeView.readAttributes();
Set<PosixFilePermission> permissions = readAttributes.permissions();
return PosixFilePermissions.toString(permissions);
}
public static String setPermissions(File file, String permsCode, boolean recursive) throws IOException {
PosixFileAttributeView fileAttributeView = Files.getFileAttributeView(file.toPath(), PosixFileAttributeView.class);
fileAttributeView.setPermissions(PosixFilePermissions.fromString(permsCode));
if (file.isDirectory() && recursive && file.listFiles() != null) {
for (File f : file.listFiles()) {
setPermissions(f, permsCode, true);
}
}
return permsCode;
}
public static boolean write(InputStream inputStream, File f) {
boolean ret = false;
try (OutputStream outputStream = new FileOutputStream(f)) {
int read;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
ret = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ret;
}
public static void mkFolder(String fileName) {
File f = new File(fileName);
if (!f.exists()) {
f.mkdir();
}
}
public static File mkFile(String fileName) {
File f = new File(fileName);
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
return f;
}
public static void fileProber(File dirFile) {
File parentFile = dirFile.getParentFile();
if (!parentFile.exists()) {
// 递归寻找上级目录
fileProber(parentFile);
parentFile.mkdir();
}
}
public static FileType GetFileType(String fileName) {
String ext = getExtension(fileName).toLowerCase();
if (ExtsDocument.contains(ext))
return FileType.Text;
if (ExtsSpreadsheet.contains(ext))
return FileType.Spreadsheet;
if (ExtsPresentation.contains(ext))
return FileType.Presentation;
return FileType.Text;
}
}
最近下载更多

最近浏览