java建立檔案和目錄
阿新 • • 發佈:2019-01-08
Apache Commons IO(jar包)封裝了一些檔案的操作方法,verygood. 一篇介紹
下面講的是基於JDK的檔案操作方法。
建立檔案和目錄的關鍵技術點如下:
1、File類的createNewFile根據抽象路徑建立一個新的空檔案,當抽象路徑制定的檔案存在時,建立失敗。
2、File類的mkdir方法根據抽象路徑建立目錄。
3、File類的mkdirs方法根據抽象路徑建立目錄,包括建立必需但不存在的父目錄。
4、File類的createTempFile方法建立臨時檔案,可以制定臨時檔案的檔名字首、字尾及檔案所在的目錄,如果不指定目錄,則存放在系統的臨時資料夾下。
5、除mkdirs方法外,以上方法在建立檔案和目錄時,必須保證目標檔案不存在,而且父目錄存在,否則會建立失敗。
package yuth.file; import java.io.File; import java.io.IOException; public class CreateFile { public static boolean createFile(String destFileName) { File file = new File(destFileName); if (file.exists()) { System.out.println("建立單個檔案" + destFileName + "失敗,目標檔案已存在!"); return false; } if (destFileName.endsWith(File.separator)) { System.out.println("建立單個檔案" + destFileName + "失敗,目標檔案不能為目錄!"); return false; } // 判斷目標檔案所在的目錄是否存在 if (!file.getParentFile().exists()) { // 如果目標檔案所在的目錄不存在,則建立父目錄 System.out.println("目標檔案所在目錄不存在,準備建立它!"); if (!file.getParentFile().mkdirs()) { System.out.println("建立目標檔案所在目錄失敗!"); return false; } } // 建立目標檔案 try { if (file.createNewFile()) { System.out.println("建立單個檔案" + destFileName + "成功!"); return true; } else { System.out.println("建立單個檔案" + destFileName + "失敗!"); return false; } } catch (IOException e) { e.printStackTrace(); System.out .println("建立單個檔案" + destFileName + "失敗!" + e.getMessage()); return false; } } public static boolean createDir(String destDirName) { File dir = new File(destDirName); if (dir.exists()) { System.out.println("建立目錄" + destDirName + "失敗,目標目錄已經存在"); return false; } if (!destDirName.endsWith(File.separator)) { destDirName = destDirName + File.separator; } // 建立目錄 if (dir.mkdirs()) { System.out.println("建立目錄" + destDirName + "成功!"); return true; } else { System.out.println("建立目錄" + destDirName + "失敗!"); return false; } } public static String createTempFile(String prefix, String suffix, String dirName) { File tempFile = null; if (dirName == null) { try { // 在預設資料夾下建立臨時檔案 tempFile = File.createTempFile(prefix, suffix); // 返回臨時檔案的路徑 return tempFile.getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); System.out.println("建立臨時檔案失敗!" + e.getMessage()); return null; } } else { File dir = new File(dirName); // 如果臨時檔案所在目錄不存在,首先建立 if (!dir.exists()) { if (!CreateFile.createDir(dirName)) { System.out.println("建立臨時檔案失敗,不能建立臨時檔案所在的目錄!"); return null; } } try { // 在指定目錄下建立臨時檔案 tempFile = File.createTempFile(prefix, suffix, dir); return tempFile.getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); System.out.println("建立臨時檔案失敗!" + e.getMessage()); return null; } } } public static void main(String[] args) { // 建立目錄 String dirName = "D:/work/temp/temp0/temp1"; CreateFile.createDir(dirName); // 建立檔案 String fileName = dirName + "/temp2/tempFile.txt"; CreateFile.createFile(fileName); // 建立臨時檔案 String prefix = "temp"; String suffix = ".txt"; for (int i = 0; i < 10; i++) { System.out.println("建立了臨時檔案:" + CreateFile.createTempFile(prefix, suffix, dirName)); } // 在預設目錄下建立臨時檔案 for (int i = 0; i < 10; i++) { System.out.println("在預設目錄下建立了臨時檔案:" + CreateFile.createTempFile(prefix, suffix, null)); } } }