使用文件流創建File文件和目錄以及其他的一些操作
我們創建文件時可以直接通過File f=new File(path)來創建一個文件對象,然後再通過 f.createNewFile() 就創建出來了一個文件。比如設置 path 為 C:\Users\wcl\Desktop\demo.txt 就可以在桌面上創建一個 demo.txt 文件。註意這裏要try/catch。
try { String path = "C://Users/wcl/Desktop/demo.txt"; File f = new File(path); f.createNewFile(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
如果你的path裏還包含了未創建的文件夾目錄,比如 path 為 C:\\Users\wcl\Desktop\data\demo.txt 則會報錯,提示‘’系統找不到指定的路徑‘’。,因為這裏的 data 文件夾不存在。
這時候我們可以先創建文件夾再創建文件,創建文件夾可以使用f.mkdir()方法,如果你想創建一個多級文件夾,則可以用f.mkdirs()方法創建。
try { String path = "C://Users/wcl/Desktop/data/demo.txt"; File f = new File(path); if(!f.exists()){ f.mkdirs(); } f.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
我這裏寫的path仍然為之前的path,執行上述的代碼之後,我們會在桌面上創建出來一個data文件夾,打開文件夾後,會看到裏面還有一個名為demo.txt的文件夾。
這不是我們想要的結果,因為我們想要的是data文件夾裏有的是demo.txt文件,那麽我們可以結合f.mkdirs()和f.createNewFile()兩個方法來創建:
try { String path = "C://Users/wcl/Desktop/data/demo.txt"; File f = new File(path); if(!f.getParentFile().exists()) f.getParentFile().mkdirs();if( !f.exists() ){ f.createNewFile(); } } catch (IOException e) { e.printStackTrace(); }
上面的代碼先是通過f.getParentFile() 來獲取到上一級的文件夾,也就是data文件夾,通過f.getParentFile().exists()來判斷文件夾是否存在,如果不存在則創建 data 目錄(文件夾),同時創建 demo.txt 文件。如果目錄(文件夾)已存在,則進行第二次判斷,判斷目錄文件中是否已存在 demo.txt 文件,如果存在則不操作,如果不存在就創建。這樣目錄和文件夾就都創建好了。
附:
1.創建臨時文件
File f = File.createTempFile(“text”, "txt");
createTempFile()裏面傳入兩個參數,第一個為臨時文件的前綴,第二個為後綴。
2.遍歷文件
String path="..."; File f=new File(path); File []files = f.listFiles(); for(File file:files){ System.out.println(file.getAbsolutePath()); }
3.關於路徑分隔符:
因為不同系統的路徑分隔符不一樣,故可以在java中使用 File.separator 作為目錄分隔符
比如之前的 path 路徑就可以寫成
String path = "C:"+File.separator+"Users"+File.separator+"wcl"+File.separator+"Desktop"+File.separator+"data"+File.separator+"demo.txt";
使用文件流創建File文件和目錄以及其他的一些操作