?????????? 無論學(xué)習(xí)那種語言都難免要接觸到文件系統(tǒng),要經(jīng)常和文件打交道。Java當(dāng)然也不例外,有些網(wǎng)友覺得IO的設(shè)計(jì)很煩瑣,有的時(shí)候我也有這樣的感覺,其實(shí)用的熟練了,倒是覺得這個(gè)東西還是挺方便的。在介紹Java IO之前首先介紹一下非常重要的一個(gè)類File。
????????????? 在看到這個(gè)類的名字后你一定認(rèn)為它代表一個(gè)文件,事實(shí)上這樣認(rèn)為并不準(zhǔn)確,因?yàn)镴ava中的File類可以代表文件也可以代表目錄。在API doc中說明了這一點(diǎn),同時(shí)把File用abstract pathname來代表。不過想想目錄不也就是特殊的文件嗎?
??? File的使用非常的簡單,它有四個(gè)構(gòu)造函數(shù):
File(String parent,String child)
File(File parent,String child)
File(URI uri)
File(String pathname)
其中前面兩個(gè)可以讓我們在某個(gè)已知特定的目錄下新建文件或者目錄,后面兩個(gè)我們可以通過pathname或者URI新建文件或者目錄。有一點(diǎn)需要注意,F(xiàn)ile雖然是一個(gè)系統(tǒng)無關(guān)的代表,但是pathname的表示是和系統(tǒng)相關(guān)的,比如UNIX下"/"表示root目錄,而windows下通常用盤符來表示。比如絕對路徑C:helloworldmingjava,如果是相對路徑的話則不以"/"開頭,一般相對路徑是相對當(dāng)前目錄的。當(dāng)我們創(chuàng)建一個(gè)File的時(shí)候可以通過exists()方法判斷它是否存在,如果不存在我們可以選擇是創(chuàng)建為文件還是創(chuàng)建為目錄。例如
?File file = new File("hehe");
??if(!file.exists())
??{
???file.mkdir();?
??}?
?for(int i=0;i <5;i++)
???{
????File listFile = new File(nextFile,"ming"+i+".txt");
????if(!listFile.exists())
????{
?????listFile.createNewFile();?
????}
???
???}
如果我們已經(jīng)知道一個(gè)File對象,希望在他的目錄之下新建文件,那么就可以使用第一個(gè)構(gòu)造器了。比如
File nextFile = new File(file,"ming\hehe");
??if(!nextFile.exists())
??{
???nextFile.mkdirs();?
??}
注意創(chuàng)建多層目錄的時(shí)候要用mkdirs()。我們還可以列舉出一個(gè)目錄下的文件列表,通過list()方法可以得到一個(gè)String[]類型的數(shù)組,這就是目錄下的文件名稱。
?String[] list = nextFile.list();
???for(int j = 0;j<list.length;j++)
???{
????System.out.println(list[j]);?
???}
File的使用并不復(fù)雜,如果有問題多參考一下API doc一般就可以解決了,下面是我寫的一個(gè)小例子,說明如何使用File文件。
import java.io.*;
import java.net.*;
public class TestFile
{
?public static void main(String[] args) throws IOException
?{
??File file = new File("hehe");
??if(!file.exists())
??{
???file.mkdir();?
??}?
??File nextFile = new File(file,"ming\hehe");
??if(!nextFile.exists())
??{
???nextFile.mkdirs();?
??}
??System.out.println(nextFile.getParent());
??
??if(nextFile.isDirectory())
??{
???File newFile = new File(nextFile,"ming.txt");
???if(!newFile.exists())
???{
????newFile.createNewFile();
????System.out.println(newFile.getName());
????System.out.println(newFile.getAbsoluteFile());
????
???}
???for(int i=0;i <5;i++)
???{
????File listFile = new File(nextFile,"ming"+i+".txt");
????if(!listFile.exists())
????{
?????listFile.createNewFile();?
????}
???
???}
???String[] list = nextFile.list();
???for(int j = 0;j<list.length;j++)
???{
????System.out.println(list[j]);?
???}??
??}
??
??
?}?
}
運(yùn)行結(jié)果:
hehe\ming
ming.txt
D:\臨時(shí)資料\temp\hehe\ming\hehe\ming.txt
ming.txt
ming0.txt
ming1.txt
ming2.txt
ming3.txt
ming4.txt