無論學習那種語言都難免要接觸到文件系統,要經常和文件打交道。Java當然也不例外,有些網友覺得IO的設計很煩瑣,有的時候我也有這樣的感覺,其實用的熟練了,倒是覺得這個東西還是挺方便的。在介紹Java IO之前首先介紹一下非常重要的一個類File。
在看到這個類的名字後你一定認為它代表一個文件,事實上這樣認為並不准確,因為Java中的File類可以代表文件也可以代表目錄。在API doc中說明了這一點,同時把File用abstract pathname來代表。不過想想目錄不也就是特殊的文件嗎?
File的使用非常的簡單,它有四個構造函數:
File(String parent,String child)
File(File parent,String child)
File(URI uri)
File(String pathname)
其中前面兩個可以讓我們在某個已知特定的目錄下新建文件或者目錄,後面兩個我們可以通過pathname或者URI新建文件或者目錄。有一點需要注意,File雖然是一個系統無關的代表,但是pathname的表示是和系統相關的,比如UNIX下"/"表示root目錄,而windows下通常用盤符來表示。比如絕對路徑C:helloworldmingjava,如果是相對路徑的話則不以"/"開頭,一般相對路徑是相對當前目錄的。當我們創建一個File的時候可以通過exists()方法判斷它是否存在,如果不存在我們可以選擇是創建為文件還是創建為目錄。例如
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();
}
}
如果我們已經知道一個File對象,希望在他的目錄之下新建文件,那麼就可以使用第一個構造器了。比如
File nextFile = new File(file,"ming\hehe");
if(!nextFile.exists())
{
nextFile.mkdirs();
}
注意創建多層目錄的時候要用mkdirs()。我們還可以列舉出一個目錄下的文件列表,通過list()方法可以得到一個String[]類型的數組,這就是目錄下的文件名稱。
String[] list = nextFile.list();
for(int j = 0;j<list.length;j++)
{
System.out.println(list[j]);
}
File的使用並不復雜,如果有問題多參考一下API doc一般就可以解決了,下面是我寫的一個小例子,說明如何使用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]);
}
}
}
}
輸出結果為:
heheming
ming.txt
ming0.txt
ming1.txt
ming2.txt
ming3.txt
ming4.txt
Press any key to continue...