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