日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FileUtils工具类

發布時間:2023/12/10 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FileUtils工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
getFileByPath : 根據文件路徑獲取文件 isFileExists : 判斷文件是否存在 isDir : 判斷是否是目錄 isFile : 判斷是否是文件 createOrExistsDir : 判斷目錄是否存在,不存在則判斷是否創建成功 createOrExistsFile : 判斷文件是否存在,不存在則判斷是否創建成功 createFileByDeleteOldFile : 判斷文件是否存在,存在則在創建之前刪除 copyDir : 復制目錄 copyFile : 復制文件 moveDir : 移動目錄 moveFile : 移動文件 deleteDir : 刪除目錄 deleteFile : 刪除文件 listFilesInDir : 獲取目錄下所有文件 listFilesInDir : 獲取目錄下所有文件包括子目錄 listFilesInDirWithFilter : 獲取目錄下所有后綴名為suffix的文件 listFilesInDirWithFilter : 獲取目錄下所有后綴名為suffix的文件包括子目錄 listFilesInDirWithFilter : 獲取目錄下所有符合filter的文件 listFilesInDirWithFilter : 獲取目錄下所有符合filter的文件包括子目錄 searchFileInDir : 獲取目錄下指定文件名的文件包括子目錄 writeFileFromIS : 將輸入流寫入文件 writeFileFromString : 將字符串寫入文件 getFileCharsetSimple : 簡單獲取文件編碼格式 getFileLines : 獲取文件行數 readFile2List : 指定編碼按行讀取文件到List readFile2SB : 指定編碼按行讀取文件到StringBuilder中 getFileSize : 獲取文件大小 getFileMD5 : 獲取文件的MD5校驗碼 getDirName : 根據全路徑獲取最長目錄 getFileName : 根據全路徑獲取文件名 getFileNameNoExtension : 根據全路徑獲取文件名不帶拓展名 getFileExtension : 根據全路徑獲取文件拓展名 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List;import static com.blankj.utilcode.utils.ConstUtils.*;/*** <pre>* author: Blankj* blog : http://blankj.com* time : 2016/8/11* desc : 文件相關工具類* </pre>*/ public class FileUtils {private FileUtils() {throw new UnsupportedOperationException("u can't instantiate me...");}/*** 根據文件路徑獲取文件** @param filePath 文件路徑* @return 文件*/public static File getFileByPath(String filePath) {return StringUtils.isSpace(filePath) ? null : new File(filePath);}/*** 判斷文件是否存在** @param filePath 文件路徑* @return {@code true}: 存在<br>{@code false}: 不存在*/public static boolean isFileExists(String filePath) {return isFileExists(getFileByPath(filePath));}/*** 判斷文件是否存在** @param file 文件* @return {@code true}: 存在<br>{@code false}: 不存在*/public static boolean isFileExists(File file) {return file != null && file.exists();}/*** 判斷是否是目錄** @param dirPath 目錄路徑* @return {@code true}: 是<br>{@code false}: 否*/public static boolean isDir(String dirPath) {return isDir(getFileByPath(dirPath));}/*** 判斷是否是目錄** @param file 文件* @return {@code true}: 是<br>{@code false}: 否*/public static boolean isDir(File file) {return isFileExists(file) && file.isDirectory();}/*** 判斷是否是文件** @param filePath 文件路徑* @return {@code true}: 是<br>{@code false}: 否*/public static boolean isFile(String filePath) {return isFile(getFileByPath(filePath));}/*** 判斷是否是文件** @param file 文件* @return {@code true}: 是<br>{@code false}: 否*/public static boolean isFile(File file) {return isFileExists(file) && file.isFile();}/*** 判斷目錄是否存在,不存在則判斷是否創建成功** @param dirPath 文件路徑* @return {@code true}: 存在或創建成功<br>{@code false}: 不存在或創建失敗*/public static boolean createOrExistsDir(String dirPath) {return createOrExistsDir(getFileByPath(dirPath));}/*** 判斷目錄是否存在,不存在則判斷是否創建成功** @param file 文件* @return {@code true}: 存在或創建成功<br>{@code false}: 不存在或創建失敗*/public static boolean createOrExistsDir(File file) {// 如果存在,是目錄則返回true,是文件則返回false,不存在則返回是否創建成功return file != null && (file.exists() ? file.isDirectory() : file.mkdirs());}/*** 判斷文件是否存在,不存在則判斷是否創建成功** @param filePath 文件路徑* @return {@code true}: 存在或創建成功<br>{@code false}: 不存在或創建失敗*/public static boolean createOrExistsFile(String filePath) {return createOrExistsFile(getFileByPath(filePath));}/*** 判斷文件是否存在,不存在則判斷是否創建成功** @param file 文件* @return {@code true}: 存在或創建成功<br>{@code false}: 不存在或創建失敗*/public static boolean createOrExistsFile(File file) {if (file == null) return false;// 如果存在,是文件則返回true,是目錄則返回falseif (file.exists()) return file.isFile();if (!createOrExistsDir(file.getParentFile())) return false;try {return file.createNewFile();} catch (IOException e) {e.printStackTrace();return false;}}/*** 判斷文件是否存在,存在則在創建之前刪除** @param filePath 文件路徑* @return {@code true}: 創建成功<br>{@code false}: 創建失敗*/public static boolean createFileByDeleteOldFile(String filePath) {return createFileByDeleteOldFile(getFileByPath(filePath));}/*** 判斷文件是否存在,存在則在創建之前刪除** @param file 文件* @return {@code true}: 創建成功<br>{@code false}: 創建失敗*/public static boolean createFileByDeleteOldFile(File file) {if (file == null) return false;// 文件存在并且刪除失敗返回falseif (file.exists() && file.isFile() && !file.delete()) return false;// 創建目錄失敗返回falseif (!createOrExistsDir(file.getParentFile())) return false;try {return file.createNewFile();} catch (IOException e) {e.printStackTrace();return false;}}/*** 復制或移動目錄** @param srcDirPath 源目錄路徑* @param destDirPath 目標目錄路徑* @param isMove 是否移動* @return {@code true}: 復制或移動成功<br>{@code false}: 復制或移動失敗*/private static boolean copyOrMoveDir(String srcDirPath, String destDirPath, boolean isMove) {return copyOrMoveDir(getFileByPath(srcDirPath), getFileByPath(destDirPath), isMove);}/*** 復制或移動目錄** @param srcDir 源目錄* @param destDir 目標目錄* @param isMove 是否移動* @return {@code true}: 復制或移動成功<br>{@code false}: 復制或移動失敗*/private static boolean copyOrMoveDir(File srcDir, File destDir, boolean isMove) {if (srcDir == null || destDir == null) return false;// 如果目標目錄在源目錄中則返回false,看不懂的話好好想想遞歸怎么結束// srcPath : F:\\MyGithub\\AndroidUtilCode\\utilcode\\src\\test\\res// destPath: F:\\MyGithub\\AndroidUtilCode\\utilcode\\src\\test\\res1// 為防止以上這種情況出現出現誤判,須分別在后面加個路徑分隔符String srcPath = srcDir.getPath() + File.separator;String destPath = destDir.getPath() + File.separator;if (destPath.contains(srcPath)) return false;// 源文件不存在或者不是目錄則返回falseif (!srcDir.exists() || !srcDir.isDirectory()) return false;// 目標目錄不存在返回falseif (!createOrExistsDir(destDir)) return false;File[] files = srcDir.listFiles();for (File file : files) {File oneDestFile = new File(destPath + file.getName());if (file.isFile()) {// 如果操作失敗返回falseif (!copyOrMoveFile(file, oneDestFile, isMove)) return false;} else if (file.isDirectory()) {// 如果操作失敗返回falseif (!copyOrMoveDir(file, oneDestFile, isMove)) return false;}}return !isMove || deleteDir(srcDir);}/*** 復制或移動文件** @param srcFilePath 源文件路徑* @param destFilePath 目標文件路徑* @param isMove 是否移動* @return {@code true}: 復制或移動成功<br>{@code false}: 復制或移動失敗*/private static boolean copyOrMoveFile(String srcFilePath, String destFilePath, boolean isMove) {return copyOrMoveFile(getFileByPath(srcFilePath), getFileByPath(destFilePath), isMove);}/*** 復制或移動文件** @param srcFile 源文件* @param destFile 目標文件* @param isMove 是否移動* @return {@code true}: 復制或移動成功<br>{@code false}: 復制或移動失敗*/private static boolean copyOrMoveFile(File srcFile, File destFile, boolean isMove) {if (srcFile == null || destFile == null) return false;// 源文件不存在或者不是文件則返回falseif (!srcFile.exists() || !srcFile.isFile()) return false;// 目標文件存在且是文件則返回falseif (destFile.exists() && destFile.isFile()) return false;// 目標目錄不存在返回falseif (!createOrExistsDir(destFile.getParentFile())) return false;try {return writeFileFromIS(destFile, new FileInputStream(srcFile), false)&& !(isMove && !deleteFile(srcFile));} catch (FileNotFoundException e) {e.printStackTrace();return false;}}/*** 復制目錄** @param srcDirPath 源目錄路徑* @param destDirPath 目標目錄路徑* @return {@code true}: 復制成功<br>{@code false}: 復制失敗*/public static boolean copyDir(String srcDirPath, String destDirPath) {return copyDir(getFileByPath(srcDirPath), getFileByPath(destDirPath));}/*** 復制目錄** @param srcDir 源目錄* @param destDir 目標目錄* @return {@code true}: 復制成功<br>{@code false}: 復制失敗*/public static boolean copyDir(File srcDir, File destDir) {return copyOrMoveDir(srcDir, destDir, false);}/*** 復制文件** @param srcFilePath 源文件路徑* @param destFilePath 目標文件路徑* @return {@code true}: 復制成功<br>{@code false}: 復制失敗*/public static boolean copyFile(String srcFilePath, String destFilePath) {return copyFile(getFileByPath(srcFilePath), getFileByPath(destFilePath));}/*** 復制文件** @param srcFile 源文件* @param destFile 目標文件* @return {@code true}: 復制成功<br>{@code false}: 復制失敗*/public static boolean copyFile(File srcFile, File destFile) {return copyOrMoveFile(srcFile, destFile, false);}/*** 移動目錄** @param srcDirPath 源目錄路徑* @param destDirPath 目標目錄路徑* @return {@code true}: 移動成功<br>{@code false}: 移動失敗*/public static boolean moveDir(String srcDirPath, String destDirPath) {return moveDir(getFileByPath(srcDirPath), getFileByPath(destDirPath));}/*** 移動目錄** @param srcDir 源目錄* @param destDir 目標目錄* @return {@code true}: 移動成功<br>{@code false}: 移動失敗*/public static boolean moveDir(File srcDir, File destDir) {return copyOrMoveDir(srcDir, destDir, true);}/*** 移動文件** @param srcFilePath 源文件路徑* @param destFilePath 目標文件路徑* @return {@code true}: 移動成功<br>{@code false}: 移動失敗*/public static boolean moveFile(String srcFilePath, String destFilePath) {return moveFile(getFileByPath(srcFilePath), getFileByPath(destFilePath));}/*** 移動文件** @param srcFile 源文件* @param destFile 目標文件* @return {@code true}: 移動成功<br>{@code false}: 移動失敗*/public static boolean moveFile(File srcFile, File destFile) {return copyOrMoveFile(srcFile, destFile, true);}/*** 刪除目錄** @param dirPath 目錄路徑* @return {@code true}: 刪除成功<br>{@code false}: 刪除失敗*/public static boolean deleteDir(String dirPath) {return deleteDir(getFileByPath(dirPath));}/*** 刪除目錄** @param dir 目錄* @return {@code true}: 刪除成功<br>{@code false}: 刪除失敗*/public static boolean deleteDir(File dir) {if (dir == null) return false;// 目錄不存在返回trueif (!dir.exists()) return true;// 不是目錄返回falseif (!dir.isDirectory()) return false;// 現在文件存在且是文件夾File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (file.isFile()) {if (!deleteFile(file)) return false;} else if (file.isDirectory()) {if (!deleteDir(file)) return false;}}}return dir.delete();}/*** 刪除文件** @param srcFilePath 文件路徑* @return {@code true}: 刪除成功<br>{@code false}: 刪除失敗*/public static boolean deleteFile(String srcFilePath) {return deleteFile(getFileByPath(srcFilePath));}/*** 刪除文件** @param file 文件* @return {@code true}: 刪除成功<br>{@code false}: 刪除失敗*/public static boolean deleteFile(File file) {return file != null && (!file.exists() || file.isFile() && file.delete());}/*** 刪除目錄下的所有文件** @param dirPath 目錄路徑* @return {@code true}: 刪除成功<br>{@code false}: 刪除失敗*/public static boolean deleteFilesInDir(String dirPath) {return deleteFilesInDir(getFileByPath(dirPath));}/*** 刪除目錄下的所有文件** @param dir 目錄* @return {@code true}: 刪除成功<br>{@code false}: 刪除失敗*/public static boolean deleteFilesInDir(File dir) {if (dir == null) return false;// 目錄不存在返回trueif (!dir.exists()) return true;// 不是目錄返回falseif (!dir.isDirectory()) return false;// 現在文件存在且是文件夾File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (file.isFile()) {if (!deleteFile(file)) return false;} else if (file.isDirectory()) {if (!deleteDir(file)) return false;}}}return true;}/*** 獲取目錄下所有文件** @param dirPath 目錄路徑* @param isRecursive 是否遞歸進子目錄* @return 文件鏈表*/public static List<File> listFilesInDir(String dirPath, boolean isRecursive) {return listFilesInDir(getFileByPath(dirPath), isRecursive);}/*** 獲取目錄下所有文件** @param dir 目錄* @param isRecursive 是否遞歸進子目錄* @return 文件鏈表*/public static List<File> listFilesInDir(File dir, boolean isRecursive) {if (isRecursive) return listFilesInDir(dir);if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();Collections.addAll(list, dir.listFiles());return list;}/*** 獲取目錄下所有文件包括子目錄** @param dirPath 目錄路徑* @return 文件鏈表*/public static List<File> listFilesInDir(String dirPath) {return listFilesInDir(getFileByPath(dirPath));}/*** 獲取目錄下所有文件包括子目錄** @param dir 目錄* @return 文件鏈表*/public static List<File> listFilesInDir(File dir) {if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {list.add(file);if (file.isDirectory()) {list.addAll(listFilesInDir(file));}}}return list;}/*** 獲取目錄下所有后綴名為suffix的文件* <p>大小寫忽略</p>** @param dirPath 目錄路徑* @param suffix 后綴名* @param isRecursive 是否遞歸進子目錄* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(String dirPath, String suffix, boolean isRecursive) {return listFilesInDirWithFilter(getFileByPath(dirPath), suffix, isRecursive);}/*** 獲取目錄下所有后綴名為suffix的文件* <p>大小寫忽略</p>** @param dir 目錄* @param suffix 后綴名* @param isRecursive 是否遞歸進子目錄* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(File dir, String suffix, boolean isRecursive) {if (isRecursive) return listFilesInDirWithFilter(dir, suffix);if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (file.getName().toUpperCase().endsWith(suffix.toUpperCase())) {list.add(file);}}}return list;}/*** 獲取目錄下所有后綴名為suffix的文件包括子目錄* <p>大小寫忽略</p>** @param dirPath 目錄路徑* @param suffix 后綴名* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(String dirPath, String suffix) {return listFilesInDirWithFilter(getFileByPath(dirPath), suffix);}/*** 獲取目錄下所有后綴名為suffix的文件包括子目錄* <p>大小寫忽略</p>** @param dir 目錄* @param suffix 后綴名* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(File dir, String suffix) {if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (file.getName().toUpperCase().endsWith(suffix.toUpperCase())) {list.add(file);}if (file.isDirectory()) {list.addAll(listFilesInDirWithFilter(file, suffix));}}}return list;}/*** 獲取目錄下所有符合filter的文件** @param dirPath 目錄路徑* @param filter 過濾器* @param isRecursive 是否遞歸進子目錄* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(String dirPath, FilenameFilter filter, boolean isRecursive) {return listFilesInDirWithFilter(getFileByPath(dirPath), filter, isRecursive);}/*** 獲取目錄下所有符合filter的文件** @param dir 目錄* @param filter 過濾器* @param isRecursive 是否遞歸進子目錄* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(File dir, FilenameFilter filter, boolean isRecursive) {if (isRecursive) return listFilesInDirWithFilter(dir, filter);if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (filter.accept(file.getParentFile(), file.getName())) {list.add(file);}}}return list;}/*** 獲取目錄下所有符合filter的文件包括子目錄** @param dirPath 目錄路徑* @param filter 過濾器* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(String dirPath, FilenameFilter filter) {return listFilesInDirWithFilter(getFileByPath(dirPath), filter);}/*** 獲取目錄下所有符合filter的文件包括子目錄** @param dir 目錄* @param filter 過濾器* @return 文件鏈表*/public static List<File> listFilesInDirWithFilter(File dir, FilenameFilter filter) {if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (filter.accept(file.getParentFile(), file.getName())) {list.add(file);}if (file.isDirectory()) {list.addAll(listFilesInDirWithFilter(file, filter));}}}return list;}/*** 獲取目錄下指定文件名的文件包括子目錄* <p>大小寫忽略</p>** @param dirPath 目錄路徑* @param fileName 文件名* @return 文件鏈表*/public static List<File> searchFileInDir(String dirPath, String fileName) {return searchFileInDir(getFileByPath(dirPath), fileName);}/*** 獲取目錄下指定文件名的文件包括子目錄* <p>大小寫忽略</p>** @param dir 目錄* @param fileName 文件名* @return 文件鏈表*/public static List<File> searchFileInDir(File dir, String fileName) {if (dir == null || !isDir(dir)) return null;List<File> list = new ArrayList<>();File[] files = dir.listFiles();if (files != null && files.length != 0) {for (File file : files) {if (file.getName().toUpperCase().equals(fileName.toUpperCase())) {list.add(file);}if (file.isDirectory()) {list.addAll(searchFileInDir(file, fileName));}}}return list;}/*** 將輸入流寫入文件** @param filePath 路徑* @param is 輸入流* @param append 是否追加在文件末* @return {@code true}: 寫入成功<br>{@code false}: 寫入失敗*/public static boolean writeFileFromIS(String filePath, InputStream is, boolean append) {return writeFileFromIS(getFileByPath(filePath), is, append);}/*** 將輸入流寫入文件** @param file 文件* @param is 輸入流* @param append 是否追加在文件末* @return {@code true}: 寫入成功<br>{@code false}: 寫入失敗*/public static boolean writeFileFromIS(File file, InputStream is, boolean append) {if (file == null || is == null) return false;if (!createOrExistsFile(file)) return false;OutputStream os = null;try {os = new BufferedOutputStream(new FileOutputStream(file, append));byte data[] = new byte[KB];int len;while ((len = is.read(data, 0, KB)) != -1) {os.write(data, 0, len);}return true;} catch (IOException e) {e.printStackTrace();return false;} finally {closeIO(is, os);}}/*** 將字符串寫入文件** @param filePath 文件路徑* @param content 寫入內容* @param append 是否追加在文件末* @return {@code true}: 寫入成功<br>{@code false}: 寫入失敗*/public static boolean writeFileFromString(String filePath, String content, boolean append) {return writeFileFromString(getFileByPath(filePath), content, append);}/*** 將字符串寫入文件** @param file 文件* @param content 寫入內容* @param append 是否追加在文件末* @return {@code true}: 寫入成功<br>{@code false}: 寫入失敗*/public static boolean writeFileFromString(File file, String content, boolean append) {if (file == null || content == null) return false;if (!createOrExistsFile(file)) return false;FileWriter fileWriter = null;try {fileWriter = new FileWriter(file, append);fileWriter.write(content);return true;} catch (IOException e) {e.printStackTrace();return false;} finally {closeIO(fileWriter);}}/*** 指定編碼按行讀取文件到List** @param filePath 文件路徑* @param charsetName 編碼格式* @return 文件行鏈表*/public static List<String> readFile2List(String filePath, String charsetName) {return readFile2List(getFileByPath(filePath), charsetName);}/*** 指定編碼按行讀取文件到List** @param file 文件* @param charsetName 編碼格式* @return 文件行鏈表*/public static List<String> readFile2List(File file, String charsetName) {return readFile2List(file, 0, 0x7FFFFFFF, charsetName);}/*** 指定編碼按行讀取文件到List** @param filePath 文件路徑* @param st 需要讀取的開始行數* @param end 需要讀取的結束行數* @param charsetName 編碼格式* @return 包含制定行的list*/public static List<String> readFile2List(String filePath, int st, int end, StringcharsetName) {return readFile2List(getFileByPath(filePath), st, end, charsetName);}/*** 指定編碼按行讀取文件到List** @param file 文件* @param st 需要讀取的開始行數* @param end 需要讀取的結束行數* @param charsetName 編碼格式* @return 包含從start行到end行的list*/public static List<String> readFile2List(File file, int st, int end, String charsetName) {if (file == null) return null;if (st > end) return null;BufferedReader reader = null;try {String line;int curLine = 1;List<String> list = new ArrayList<>();if (StringUtils.isSpace(charsetName)) {reader = new BufferedReader(new FileReader(file));} else {reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charsetName));}while ((line = reader.readLine()) != null) {if (curLine > end) break;if (st <= curLine && curLine <= end) list.add(line);++curLine;}return list;} catch (IOException e) {e.printStackTrace();return null;} finally {closeIO(reader);}}/*** 指定編碼按行讀取文件到字符串中** @param filePath 文件路徑* @param charsetName 編碼格式* @return 字符串*/public static String readFile2String(String filePath, String charsetName) {return readFile2String(getFileByPath(filePath), charsetName);}/*** 指定編碼按行讀取文件到字符串中** @param file 文件* @param charsetName 編碼格式* @return 字符串*/public static String readFile2String(File file, String charsetName) {if (file == null) return null;BufferedReader reader = null;try {StringBuilder sb = new StringBuilder();if (StringUtils.isSpace(charsetName)) {reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));} else {reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charsetName));}String line;while ((line = reader.readLine()) != null) {sb.append(line).append("\r\n");// windows系統換行為\r\n,Linux為\n}// 要去除最后的換行符return sb.delete(sb.length() - 2, sb.length()).toString();} catch (IOException e) {e.printStackTrace();return null;} finally {closeIO(reader);}}/*** 讀取文件到字符數組中** @param filePath 文件路徑* @return 字符數組*/public static byte[] readFile2Bytes(String filePath) {return readFile2Bytes(getFileByPath(filePath));}/*** 讀取文件到字符數組中** @param file 文件* @return 字符數組*/public static byte[] readFile2Bytes(File file) {if (file == null) return null;try {return ConvertUtils.inputStream2Bytes(new FileInputStream(file));} catch (FileNotFoundException e) {e.printStackTrace();return null;}}/*** 簡單獲取文件編碼格式** @param filePath 文件路徑* @return 文件編碼*/public static String getFileCharsetSimple(String filePath) {return getFileCharsetSimple(getFileByPath(filePath));}/*** 簡單獲取文件編碼格式** @param file 文件* @return 文件編碼*/public static String getFileCharsetSimple(File file) {int p = 0;InputStream is = null;try {is = new BufferedInputStream(new FileInputStream(file));p = (is.read() << 8) + is.read();} catch (IOException e) {e.printStackTrace();} finally {closeIO(is);}switch (p) {case 0xefbb:return "UTF-8";case 0xfffe:return "Unicode";case 0xfeff:return "UTF-16BE";default:return "GBK";}}/*** 獲取文件行數** @param filePath 文件路徑* @return 文件行數*/public static int getFileLines(String filePath) {return getFileLines(getFileByPath(filePath));}/*** 獲取文件行數** @param file 文件* @return 文件行數*/public static int getFileLines(File file) {int count = 1;InputStream is = null;try {is = new BufferedInputStream(new FileInputStream(file));byte[] buffer = new byte[KB];int readChars;while ((readChars = is.read(buffer, 0, KB)) != -1) {for (int i = 0; i < readChars; ++i) {if (buffer[i] == '\n') ++count;}}} catch (IOException e) {e.printStackTrace();} finally {closeIO(is);}return count;}/*** 獲取文件大小** @param filePath 文件路徑* @return 文件大小*/public static String getFileSize(String filePath) {return getFileSize(getFileByPath(filePath));}/*** 獲取文件大小* <p>例如:getFileSize(file, ConstUtils.MB); 返回文件大小單位為MB</p>** @param file 文件* @return 文件大小*/public static String getFileSize(File file) {if (!isFileExists(file)) return "";return ConvertUtils.byte2FitSize(file.length());}/*** 獲取文件的MD5校驗碼** @param filePath 文件* @return 文件的MD5校驗碼*/public static String getFileMD5(String filePath) {return getFileMD5(getFileByPath(filePath));}/*** 獲取文件的MD5校驗碼** @param file 文件* @return 文件的MD5校驗碼*/public static String getFileMD5(File file) {return EncryptUtils.encryptMD5File2String(file);}/*** 關閉IO** @param closeables closeable*/public static void closeIO(Closeable... closeables) {if (closeables == null) return;try {for (Closeable closeable : closeables) {if (closeable != null) {closeable.close();}}} catch (IOException e) {e.printStackTrace();}}/*** 獲取全路徑中的最長目錄** @param file 文件* @return filePath最長目錄*/public static String getDirName(File file) {if (file == null) return null;return getDirName(file.getPath());}/*** 獲取全路徑中的最長目錄** @param filePath 文件路徑* @return filePath最長目錄*/public static String getDirName(String filePath) {if (StringUtils.isSpace(filePath)) return filePath;int lastSep = filePath.lastIndexOf(File.separator);return lastSep == -1 ? "" : filePath.substring(0, lastSep + 1);}/*** 獲取全路徑中的文件名** @param file 文件* @return 文件名*/public static String getFileName(File file) {if (file == null) return null;return getFileName(file.getPath());}/*** 獲取全路徑中的文件名** @param filePath 文件路徑* @return 文件名*/public static String getFileName(String filePath) {if (StringUtils.isSpace(filePath)) return filePath;int lastSep = filePath.lastIndexOf(File.separator);return lastSep == -1 ? filePath : filePath.substring(lastSep + 1);}/*** 獲取全路徑中的不帶拓展名的文件名** @param file 文件* @return 不帶拓展名的文件名*/public static String getFileNameNoExtension(File file) {if (file == null) return null;return getFileNameNoExtension(file.getPath());}/*** 獲取全路徑中的不帶拓展名的文件名** @param filePath 文件路徑* @return 不帶拓展名的文件名*/public static String getFileNameNoExtension(String filePath) {if (StringUtils.isSpace(filePath)) return filePath;int lastPoi = filePath.lastIndexOf('.');int lastSep = filePath.lastIndexOf(File.separator);if (lastSep == -1) {return (lastPoi == -1 ? filePath : filePath.substring(0, lastPoi));}if (lastPoi == -1 || lastSep > lastPoi) {return filePath.substring(lastSep + 1);}return filePath.substring(lastSep + 1, lastPoi);}/*** 獲取全路徑中的文件拓展名** @param file 文件* @return 文件拓展名*/public static String getFileExtension(File file) {if (file == null) return null;return getFileExtension(file.getPath());}/*** 獲取全路徑中的文件拓展名** @param filePath 文件路徑* @return 文件拓展名*/public static String getFileExtension(String filePath) {if (StringUtils.isSpace(filePath)) return filePath;int lastPoi = filePath.lastIndexOf('.');int lastSep = filePath.lastIndexOf(File.separator);if (lastPoi == -1 || lastSep >= lastPoi) return "";return filePath.substring(lastPoi + 1);} }

總結

以上是生活随笔為你收集整理的FileUtils工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。