這幾天要對項目進(jìn)行修改,主要是添加對文件操作的功能。如,刪除一條信息后要同時(shí)刪除它所帶的附件。于是在空閑時(shí)間,決定把功能擴大一下,做一套用Java實(shí)現的Dos命令的簡(jiǎn)單版本。Java的IO中,要對文件進(jìn)行操作用的是class File(InputStream之類(lèi)的我把它們視為是對文件內容進(jìn)行操作的class)。所以,我們要用的的操作都是通過(guò)File這個(gè)類(lèi)來(lái)實(shí)現的。下面,我們將實(shí)現所要的功能。
一. File Class
1. class File對象描述了所指定路徑下的文件和目錄的信息。通過(guò)File對象,可以查看某個(gè)路徑下的文件和目錄信息,并可操作路徑下的文件和目錄。
2. class File的應用
2.1 查看(查詢(xún))某個(gè)路徑下的文件信息。
2.1.1 class File的構造函數
class File有兩類(lèi)構造函數,一類(lèi)帶有一個(gè)參數,用于產(chǎn)生一個(gè)描述參數所所指向的路徑下的文件系統的對象;另一類(lèi)帶有兩數,第一個(gè)參數表示路徑,第二個(gè)參數表示子目錄,用來(lái)產(chǎn)生描述第一個(gè)參數所指向的路徑下的某個(gè)子目錄的文件信息,子目錄名稱(chēng)由第二個(gè)參數指定。如:
File path = new File(“c:\\”);產(chǎn)生一個(gè)描述c:\下的文件信息的對象
File path = new File(“c:\\”, “test”);產(chǎn)生一個(gè)描述c:\的test子目錄的文件信息的對象。
2.1.2 list()和list(FilenameFilter filter)函數
1) list()函數以String數組的形式返回一個(gè)File對象所描述的文件信息。返回的是路徑下的所有文件和目錄的文件名和目錄名。
2) list(FilenameFilter filter)函數則提供了查詢(xún)功能,通過(guò)它可能查詢(xún)出滿(mǎn)足特定條件的文件名和目錄名。
2.1.3 用FinenameFilter接口進(jìn)行文件或目錄的查詢(xún)
2.1.3.1. 這個(gè)接口只包含一個(gè)函數:boolean accept(File dir, String name),第二個(gè)參數代表一個(gè)文件或目錄的名稱(chēng),第一個(gè)參數代表文件或目錄所在的目錄的名稱(chēng)。當返回true,表示文件滿(mǎn)足查詢(xún)條件,要被放入結果中;否則,表示文件不滿(mǎn)足要求。
2.1.3.2. 工作原理
當調用某個(gè)File對象的list(FilenameFilter filter)函數時(shí), 會(huì )對File對象中的每一個(gè)文件或目錄調用參數filter中的accept()方法。在對一個(gè)文件或目錄調用accept()函數時(shí)把它的名稱(chēng)以及一個(gè)描述它所在的目錄的File對象作為參數傳給accept()函數。
2.1.4 一個(gè)簡(jiǎn)單的實(shí)例
- import java.io.File;
- import java.io.FilenameFilter;
- class DirList{
- public void printFile(String dir, String filter){
- File path = new File(dir);
- String[] fileList;
- if(filter.length()==0){
- System.out.println("\nAll file:");
- fileList = path.list(); //取得所有文件信息
- }
- else{
- System.out.println("\nAll file including " + filter);
- //取得滿(mǎn)足查詢(xún)條件的文件信息
- fileList = path.list(new DirFilter(filter));
- }
- for(int i=0; i<fileList.length; i++)
- System.out.println(fileList[i]);
- }
- public void printFile(String dir){
- printFile(dir, "");
- }
- }
- class DirFilter implements FilenameFilter{
- String afn; //存放查詢(xún)條件
- DirFilter(String afn) { this.afn = afn; }
- //滿(mǎn)足查詢(xún)條件,返回true
- public boolean accept(File dir, String name){
- return name.indexOf(afn)!=-1;
- }
- }
- public class TestIO{
- public static void main(String[] args){
- DirList dirList = new DirList();
- //顯示F:\test下的文件信息
- dirList.printFile("F:\\test");
- //顯示F:\test下名稱(chēng)包含“.rar”文件信息
- dirList.printFile("F:\\test", ".rar");
- //顯示F:\test下名稱(chēng)包含“r”文件信息
- dirList.printFile("F:\\test", "r");
- }
- }
這個(gè)只是一個(gè)簡(jiǎn)單的例子,只要完善accept()函數,你也可以做出一個(gè)Java版的dir命令來(lái)。
2.2 當然,我們還能通過(guò)File來(lái)文件或目錄進(jìn)行創(chuàng )建、刪除和改名的操作。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。