Fiel類總結

 File類:
三個構造函數
1.File(string pathname);//pathname表示創建文件或者目錄的路徑
例File dir1=new File("G://dir1");//創建目錄
if(!dir1.exists())
{
    dir1.mkdir();//如果不存在則創建目錄
}
例File file1=new File("G://test.txt");//創建文件
if(!file1.exists())
{
    try{
        file1.createNewFile();
    }catch(IOException e)
    {
        e.printStackTrace();
    }
}
2.File(File parent,String child);//參數parent表示根目錄,child表示子路徑
例:File dir2=new File(dir1,"dir2");//在dir1下創建目錄dir2
    if(!dir2.exists())
    {
        dir2.mkdirs();
    }
    File file1=new File(dir1,"test1.txt");//在目錄dir1下創建文件test.txt
    if(!file1.exists())
    {
        try{
            file1.createNewFile();
            }catch(IOException e)
            {
                e.printStackTrace();
            }
    }
    File dir4=new File(dir1,"dir3//dir4");//在dir1下創建目錄dir3,然後dir3下創建dir4
    if(!dir4.exists())
    {
        dir4.mkdirs();
    }
3.File(String parent,String child);//參數parent表示根目錄,child表示子路徑(同上)
4.File[] listFiles():返回當前目錄下所有的子目錄和文件的File對象
5.boolean exists(),判斷文件或者目錄是否存在
6.boolean createNewFile(); 如果文件不存在,則創建新的文件
7.boolean mkdir();創建由File對象表示的目錄
8.boolean mkdirs();在文件系統創建有File對象表示的目錄,如果該目錄的父目錄不存在的話,
則創建所有的父目錄
9.boolean canRead(),判斷是否有讀的權限
10.boolean canWrite;判斷是否有寫的權限
11.boolean delete();刪除對象File所有代表的文件或目錄,如果目錄下包含子目錄或者文件則不允許
刪除File對象所代表的目錄
12.String getName(),返回File對象代表的文件或者目錄的名稱
13.String getParent(),返回File對象代表的文件或者目錄的根目錄,不包含當前目錄,如果沒有返回NULL
System.out.println(dir4.getParent()); 運行結果:G:/dir1/dir3
14.String getPath();返回File對象代表的文件或者目錄的目錄,包含當前目錄
System.out.println(dir4.getPath()); 運行結果:G:/dir1/dir3/dir4
15.String getAbsolutePath();返回File對象代表的文件或者目錄的絕對路徑
System.out.println(dir4.getAbsolutePath()) 運行結果:G:/dir1/dir3/dir4
16.boolean isFile();判斷File對象是否代表一個文件
17.booeanl isDirectory(),判斷File對象是否代表一個目錄
18.long lastModified(),返回File對象代表的文件或者目錄最近一次被修改的時間
19.String[] lsit(),如果該File對象代表目錄,則返回該目錄下所有文件和目錄的名字列表
20.boolean renameTo(File file)如果File對象代表文件,則將文件名改爲file參數所表示的文件名

import java.io.*;
//impirt java.io.date;

public class UseFile {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    
    File dir1=new File("G://dir1");
    if(!dir1.exists())
    {
        dir1.mkdir();
    }
    File dir2=new File(dir1,"dir2");
    if(!dir2.exists())
    {
        dir2.mkdirs();
    }
    File dir4=new File(dir1,"dir3//dir4");
    if(!dir4.exists())
    {
        dir4.mkdirs();
    }
    File file1=new File(dir1,"test1.txt");
    if(!file1.exists())
    {
        try{
            file1.createNewFile();
            }catch(IOException e)
            {
                e.printStackTrace();
            }
    }
    
    File file=new File(dir2,"test.txt");
    if(!file.exists())
    {
        try{
        file.createNewFile();
        }catch(IOException e)
        {
            e.printStackTrace();
        }
    }
        
    //System.out.println(dir4);測試各種方法
    //listDir(dir1);//打印子目錄及其文件
    //deleteDir(dir1);//刪除目錄及其文件
    
    String[] lists=dir1.list();
    //打印當前目錄下包含的所有子目錄和文件的名字
    String info="目錄"+dir1.getName()+"(";
    for(int i=0;i<lists.length;i++)
    {
        info+=lists[i]+",";
    }
    info+=")";
    System.out.println(info);
    
    }
    
    public static void listDir(File dir)
    {
        File[] lists=dir.listFiles();
        //打印當前目錄下包含的所有子目錄和文件的名字
        String info="目錄"+dir.getName()+"(";
        for(int i=0;i<lists.length;i++)
        {
            info+=lists[i].getName()+",";
        }
        info+=")";
        System.out.println(info);
        
        //遞歸打印出當前目錄下所有子目錄及其文件的詳細信息
        for(int i=0;i<lists.length;i++)
        {
            File f=lists[i];
            if(f.isFile())
            {
                System.out.println("文件"+f.getName()+"canRead:"+f.canRead()+"canWrite:"
                        +f.canWrite()+"lastModified:"+f.lastModified());
            }
            else
            {
                listDir(f);
            }
        }
    }
    
    public static void deleteDir(File dir)
    {
        if(dir.isFile())//如果dir是文件則直接刪除,返回即可
        {
            dir.delete();
            return;
        }
        File[] lists=dir.listFiles();
        for(int i=0;i<lists.length;i++)
        {
            deleteDir(lists[i]);//遞歸刪除所有的子目錄和文件
        }
        dir.delete();
    }
    
            
}

 

Filel列的list()和listFiles()方法都可以返回當前Fiel對象代表的目錄下所有子目錄和文件的清單,如果僅希望滿足某種條件下的子目錄和文件清單,則可以用:File[] list(FilenameFilter filter)和File[] listFiles(FilenameFilter filter),filter爲過濾條件,不過要實現接口中的方法

public interface FilenameFilter()

{

     public boolean accept(File dir,String name)

}

例子:在UserFilenameFilter類中定義了一個匿名類其中放啊accept()的實現爲:只有當currentFile對象代表文件,並且擴展名爲“.txt”事才加入返回清單中;

ubilc void UserFIlenameFilter

{

    public stacic void main(string[] args)

    {

             File dir1=new FIle("G://");

            FIlenamaFIlter filter=new FilenameFilter

        {

               public boolean accept(File dir ,String name)
            {
                System.out.println("根路徑"+dir.getPath()+"子路徑"+name);
                File currentFile=new File(dir,name);
                if(currentFile.isFile()&&name.indexOf(".txt")!=-1)
                {
                    return true;
                }    
                else
                {
                    return false;
                }
            }

        }
        
        string[] lists[]=dir1.list(filter);//利用filter來返回指定的目錄和文件
        for(int i=0;i<lists.length;i++)
        {
            System.out.println(lists[i]);
        }

    }

}

 

 

 

發佈了21 篇原創文章 · 獲贊 1 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章