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