File操作小梳理

來源:互聯網
上載者:User

1關於file.isFile()與file.isDirectory()
錯誤以為若是Directory一定是file,file不一定是Directory
更正:file和Directory是兩碼事.只能是file或Directory中其中一個.

2並不是說我們執行一句File f=new File("F:\\x.txt");
在本地硬碟上就產生了一個x.txt檔案.而應該進行如下的
操作才可以.
File f=new File("F:\\x.txt");
 if (!f.exists()) {
    f.createNewFile();
  }
其中f.createNewFile()表示建立了一個空檔案

3 對於目錄應該先執行file.mkdir(s)()才可以
往裡面其下存入檔案.比如:
File f=new File("F:\\test\\x.txt");
  if (!f.exists()) {
     f.createNewFile();
  }
這當然要報錯,因為x.txt的所在目錄還不存在!!
所以應該改正為:
File f=new File("F:\\test\\x.txt");
f.getParentFile().mkdirs();
if (!f.exists()) {
   f.createNewFile();
}
同樣的道理
File f=new File("F:\\test\\x.txt");
if (f.isFile()) {
   System.out.println("true");
}else{
   System.out.println("false");
}
結果為false

所以更好的實踐體驗,應該如下:
 File file=new File("E:\\zz\\xx\\123.txt");
 //1 首先判斷其父檔案是否存在,若不存在則建立

 //  不論其父路徑有多複雜都會建立.
 //  比如E盤下根本就沒有zz和xx
 //  但在此會按該層次建立
 if (!file.getParentFile().exists()) {
   file.getParentFile().mkdirs();
 }

 //2 再判斷該檔案是否存在,若不存在則建立
 if (!file.exists()) {
   try {
    file.createNewFile();
  } catch (IOException e) {
    e.printStackTrace();
   }
  }  

  
4 總結兩種與File有關的兩種操作思路
(1)
File f=new File("");
f.createNewFile();
然後對f操作.
這當然沒有錯,因為f已經被建立了

(2)file f=new File("");
然後用輸入輸出資料流進行流操作
例如:
File f=new File("F:\\test.txt");
FileOutputStream fos=new FileOutputStream(f);
String string="hello";
byte []b=string.getBytes();
fos.write(b, 0, b.length);  
疑問:
按照(1)中的思路沒有執行f.createNewFile()為什麼不報錯???
因為輸出資料流FileOutputStream已經做了該工作
修改例子即可知:
File f=new File("F:\\2221x.txt");
if (f.isFile()) {
   System.out.println("true1");
} else {
   System.out.println("false1");
}
FileOutputStream fos=new FileOutputStream(f);
if (f.isFile()) {
   System.out.println("true2");
} else {
   System.out.println("false2");
}
String string="hello";
byte []b=string.getBytes();
fos.write(b, 0, b.length);
輸出false1,true2
即得到驗證.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.