JAVA的I/O操作(一)__JAVA
來源:互聯網
上載者:User
我一直奇怪於為什麼在我前面所學到的內容裡,沒有從鍵盤輸入的語句,而今天所學的給了我很好的解答,這些內容全部包括在java.io包下。這一篇裡所講到的東西包括,File類(如何建立和刪除檔案,對檔案寫入和從檔案讀出)。
File類有兩個構造方法,File(父目錄,檔案名稱),關聯指定的目錄下指定名稱的檔案,File(檔案名稱/目錄名),關聯某個檔案名稱或者目錄,這裡的/表示的意思是“或者”。
比較好的方法是先用一個File對象關聯一個目錄名,然後建立這個目錄,(mkdir()),再用構造方法構造一個檔案。以下的代碼是在“我的文件”裡建立一個名為“1.txt”的檔案。
File dir=new File("C:"+File.separator+"Documents and Settings"+File.separator+"Yxy"+File.separator+"My Documents"); //此處注意逸出字元
dir.mkdir(); //建立目錄
File file1=new File(dir,"1.txt");
file1.createNewFile(); //建立一個新檔案
String[] str1=dir.list(); //下文說到的list()
//不知道為什麼這裡的空格硬是只能這麼長,代碼是我從我自己的代碼裡拷過來的,汗
//一個先
各位,其實這裡可以用逸出字元“//”來代替File.separator,但是這不是一個好的習慣。為了實現Java的一次編譯,四處啟動並執行性感特點,我們需要一個通用的檔案分隔字元,因為各種作業系統下存在差異,比如linux的檔案分隔字元是正斜杠"/"。而File的特性separator正是擷取當前作業系統下的檔案分隔字元。另,千萬不要將讓"/"單獨存在,在代碼中這是一個逸出字元的標識,它會將接下來的一個字元理解為逸出字元。
除了這種方法可以建立新的檔案,還可以調用File類下的一個靜態函數
File createTempFile(String prefix,String suffix,File directory),這是一個完整的版本,在指定的目錄下建立一個以prefix為首碼名,suffix為尾碼名的臨時檔案,通過deleteOnExit()來刪除。但是還有一個精簡的版本,
File createTempFile(String prefix,String suffix),沒有指定目錄,將在當前作業系統預設的臨時檔案夾裡建立以prefix為首碼名,suffix為尾碼名的臨時檔案。
以上是如何建立檔案,接下來講的是如何查閱目錄下的檔案和通過檔案過濾器尋找檔案。
看到前面的代碼裡寫到的list()方法了嗎,返回一個String類型的數組,擷取目前的目錄下的所有檔案名稱,包括目錄名(即檔案夾)。但是,這樣是不夠的,無法找到我們所需要的檔案,我們需要的是按我們的要求找到某個房間。Java.io包類提供類檔案過濾器FileNameFilter,它是一個介面,內有方法boolean accept(File dir, String name),這是一個需要重寫的方法,重寫了這個方法之後,list(FileNameFileter f)方法可以列出符合我們要求的方法。
以下是我練習的代碼。
import java.io.*;
class FileNameFilterInstance implements FilenameFilter //檔案過濾器
{
public boolean accept(File dir,String name)
{
return name.indexOf(".java")!=-1; //注意傳回型別,indexof()返回索引或者-1,而 //accept要求返回boolean
}
}
class Test1
{
public static void main(String[] args) throws Exception //此處注意拋出異常
{
File dir=new File("C:"+File.separator+"Documents and Settings"+File.separator+"Yxy"+File.separator+"My Documents"); //此處注意逸出字元
dir.mkdir();
File file1=new File(dir,"1.txt");
file1.createNewFile();
File file2=File.createTempFile("hello",".java",dir); //在dir指定目錄下建立hello.java,首碼至少3字長
String[] str1=dir.list();
for(int i=1;i<str1.length;i++)
System.out.println(str1[i]);
System.out.println("--------------------------");
String[] str2=dir.list(new FileNameFilterInstance());
for(int i=0;i<str2.length;i++)
System.out.println(str2[i]);
file1.deleteOnExit(); //退出時刪除檔案
file2.deleteOnExit();
Thread.sleep(5000);
}
}
/*在"我的文件"下建立1.txt和hello.java返回我的文件下的所有檔案和目錄名,並根據檔案過濾器檢查到hello.java,最後在退出時刪除建立的檔案,期間建立檔案用到了createNewFile和靜態方法createTempFile*/