標籤:java-io java-file 檔案操作file io流 java-流
1 檔案對象
public class CreateFile { public static void main(String[] args) { //建立要操作的檔案路徑和名稱 //其中,File.separator表示系統相關的分隔字元,Linux下為:/ Windows下為:\\ //path在此程式裡面代表父目錄,不包含子檔案 String path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; //childPath在此程式裡面代表子目錄,包含子檔案 String childPath = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\demo.txt"; //用父目錄和子檔案分隔的方式構造File對象 //也可以寫成 new File("D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent","test.txt"); File f1 = new File(path,"test.txt"); //使用絕對路徑來構造File對象 //也可以寫成new File("D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\demo.txt"); File f2 = new File(childPath); //建立父目錄的檔案對象 File parent = new File(path); //使用已有父目錄對象和子檔案構建新的File對象 File f3 = new File(parent,"hello.txt"); System.out.println("f1的路徑=" + f1); System.out.println("f2的路徑=" + f2); System.out.println("f3的路徑=" + f3); }}
結果圖
值得注意的是,代碼中只是建立了對象,並沒有組建檔案!!
運行代碼之後,該檔案夾下並沒有產生響應的檔案夾和檔案。
2 建立檔案和刪除檔案
public class CreateFileAndDelete { public static void main(String[] args) { String Path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; File f = new File(Path); try { /*因為建立和刪除檔案涉及到底層操作,所以有可能會引發異常*/ //如果建立成功則會返回true //如果已存在該檔案,則建立不成功,返回flase,別以為會覆蓋 System.out.println("建立檔案:" + f.createNewFile()); //刪除檔案,成功返回true,否則返回flase System.out.println("刪除檔案:" + f.delete()); //此方法表示在虛擬機器退出時刪除檔案 //原因在於:程式運行時有可能發生異常造成直接退出 //清理殘餘很有必要~! f.deleteOnExit(); } catch (IOException e) { e.printStackTrace(); } }}
結果
3 檔案的判斷和測試
public class FileTest { public static void main(String[] args) { String Path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; File f = new File(Path); //判斷檔案是否可執行 System.out.println("f是否可執行:" + f.canExecute()); //判斷檔案是否存在 System.out.println("f是否存在:" + f.exists()); //判斷檔案是否可讀 System.out.println("f是否可讀:" + f.canRead()); //判斷檔案是否可寫 System.out.println("f是否可寫:" + f.canWrite()); //判斷檔案是否為絕對路徑名 System.out.println("f是否絕對路徑:" + f.isAbsolute()); //判斷檔案是否為一個標準檔案 System.out.println("f是否為標準檔案:" + f.isFile()); //判斷檔案是否為一個目錄 System.out.println("f是否為目錄:" + f.isDirectory()); //判斷檔案是否隱藏 System.out.println("f是否隱藏:" + f.isHidden()); } }
在parent檔案夾不存在的情況下結果
在parent檔案夾存在的情況下結果
4 建立檔案夾
public class CreateFilePath { public static void main(String[] args) { String path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; //path在此處作為父目錄存在 File f1 = new File(path,"/abc"); File f2 = new File(path,"/d/e/f/g"); //建立一個目錄 System.out.println(f1.mkdir()); //遞迴建立目錄 System.out.println(f2.mkdirs()); } }
運行代碼前結果圖
運行代碼後結果圖
控制台輸出為
5 擷取檔案資訊
public class GetFileInfo { public static void main(String[] args) { String path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; File f = new File(path); //返迴文件的絕對路徑 //此處傳回值為String System.out.println("f的絕對路徑名:" + f.getAbsolutePath()); //返迴文件的絕對路徑 //此處傳回值為File System.out.println("f的絕對路徑對象:" + f.getAbsoluteFile()); //返迴文件或目錄的名稱 System.out.println("f的名稱:" + f.getName()); //返迴文件的相對路徑 //建構函式中封裝的是什麼路徑,就返回什麼路徑 System.out.println("f的路徑:" + f.getPath()); //返回父目錄的路徑 //如果在建構函式中的路徑不是絕對路徑,那麼此處返回null System.out.println("f的父目錄:" + f.getParent()); }}
結果圖
控制台輸出資訊:
6 列出檔案系統的根目錄
public class GetRootPath { public static void main(String[] args) { //listRoots()是一個靜態方法,返迴文件數組 File[] files = File.listRoots(); //foreach迴圈列印File對象 for (File x : files) { System.out.println(x); } }}
結果
7 列出檔案下的所有檔案和目錄
public class GetFileChildfile { public static void main(String[] args) { String path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; File f = new File(path); //方式一:list() //返回一個包含指定目錄下所有檔案名稱的字串數組 //如果不是一個目錄則返回null String[] files = f.list(); for (String x : files) { System.out.println(x); } //方式二:listFiles() //返回File數組 /* File[] files = f.listFiles(); for (File x : files) { //如果需要包含路徑,則直接列印x即可 System.out.println(x.getName()); } */ }}
結果圖:
8 遞迴列出目錄下所有檔案
public class GetAllChileFile { public static void main(String[] args) { String path = "D:\\Program Files (x86)\\ADT\\workspace\\JavaIO\\parent"; File f = new File(path); //調用下面的遞迴方法 print(f); } //用遞迴的方式列印目錄列表 public static void print(File f) { if(f.isDirectory()){ File[] files = f.listFiles(); for(File x : files) { print(x); } } else { System.out.println(f); } }}
結果;
如果有什麼問題或者錯誤,請大家留言!謝謝~~!
源碼稍後給出下載
Java IO流詳解(二)