package com.matrix.system.hive.plugin.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.matrix.core.tools.StringUtils; import org.apache.log4j.Logger; /** * 文件操作工具类 * @author Ron * @createTime 2014.08.30 */ public class FileUtils { public static Logger log = Logger.getLogger(FileUtils.class); public static final String FILE_FORMAT_CHAR = "."; /** * 创建文件,如果文件名称为空,则返回null * * @param fileName * @return */ public static File createFile(String fileName) { if (StringUtils.isNotBlank(fileName)) { return new File(fileName); } return null; } /** * 在文件夹下创建文件 * * @param folderName * @param fileName * @return */ public static File createFileInFolder(String folderName, String fileName) { if (StringUtils.isNotBlank(fileName)) { File folder = createFolder(folderName); if (folder != null) { return new File(folder, fileName); } } return null; } /** * 在文件夹下创建文件 * * @param folder * @param fileName * @return */ public static File createFileInFolder(File folder, String fileName) { if (StringUtils.isNotBlank(fileName)) { if (folder != null) { return new File(folder, fileName); } } return null; } /** * 创建文件夹 * * @param folderName * @return */ public static File createFolder(String folderName) { if (StringUtils.isNotBlank(folderName)) { File file = new File(folderName); if (!file.exists()) { if (file.mkdirs()) { return file; } else { log.warn("create folder[" + folderName + "] failed."); } } else { return file; } } return null; } /** * 在文件夹下创建文件夹 * * @param folder * @param folderName * @return */ public static File createFolder(File folder, String folderName) { if (StringUtils.isNotBlank(folderName)) { if (folder == null) { return null; } File file = new File(folder, folderName); if (!file.exists()) { if (file.mkdirs()) { return file; } else { log.warn("create folder[" + folderName + "] failed."); } } } return null; } /** * 在文件夹下创建文件夹 * * @param folder * @param folderName * @return */ public static File createFolder(String parentFolderName, String folderName) { if (StringUtils.isNotBlank(folderName) && StringUtils.isNotBlank(parentFolderName)) { parentFolderName = parentFolderName + File.separator + folderName; return createFolder(parentFolderName); } return null; } /** * 删除文件 * @param fileName */ public static void deleteFile(String fileName) { if (StringUtils.isBlank(fileName)) { return; } File file = new File(fileName); file.deleteOnExit(); } /** * 将文件sourceFile重命名targetFile * @param sourceFile * @param targetFile */ public static void moveFile(String sourceFile, String targetFile) { if (StringUtils.isBlank(sourceFile) || StringUtils.isBlank(targetFile)) { return; } File file = new File(sourceFile); file.renameTo(new File(targetFile)); } /** * 将文件sourceFile重命名targetFile * @param sourceFile * @param targetFolder * @param targetFile */ public static void moveFile(String sourceFile, String targetFolder, String targetFile) { if (StringUtils.isNotBlank(targetFolder)) { createFolder(targetFolder); } moveFile(sourceFile, targetFile); } /** * 获取文件格式 * @param fileName * @return */ public static String getFileFormat(String fileName) { if (StringUtils.isBlank(fileName)) { return fileName; } int index = fileName.lastIndexOf(FILE_FORMAT_CHAR); if (index > -1) { return fileName.substring(index + 1, fileName.length()); } return fileName; } /** * 校验文件的格式 * @param fileName 文件名称 * @param fileTypes 合法的文件格式 * @return */ public static boolean checkFileType(String fileName, String[] fileTypes) { if (StringUtils.isBlank(fileName) || fileTypes == null) { return true; } String fileFormat = getFileFormat(fileName); for (String fileType : fileTypes) { //匹配合法格式 if (StringUtils.equalsIgnoreCase(fileFormat, fileType)) { return true; } } return false; } /** * 将文件内容按照行读取到list * @param file * @return * @throws IOException */ public static List readLines(File file) throws IOException { List list = new ArrayList(); BufferedReader reader = new BufferedReader(new FileReader(file)); String line = null; do { line = reader.readLine(); if (line != null) { list.add(line); } } while (line != null); return list; } }