JAVA中的File類


package testPage;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

/**
 * File類有一個listFiles(FileNameFilter filter).
 * 只需要實現一個簡單的filter就可以找到滿足fileter條件的所有文件。
 * 例如我要在E:\data\file_selector_test 目錄下面查找以.txt結尾的文件,我可以這么做。見下例。
 * @author Administrator
 *
 */
public class FileNameSelector implements FilenameFilter {
    String extension = ".";

    public FileNameSelector(String fileExtensionNoDot) {
        extension += fileExtensionNoDot;
    }

    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(extension);
    }
    
    public static void main(String[] args) {
        
        File directory = new File("E:\\test\\file_selector_test");
        //listFiles()列出所有文件
        File[] files = directory.listFiles();
        System.out.println("\n目錄" + directory.getName() + "下的所有文件");
        for (File file : files) {
            System.out.print("  " + file.getName());
        }
        //listFiles(FileNameFilter filter)列出所有.txt文件
        File[] txtFiles = directory.listFiles(new FileNameSelector("txt"));
        System.out.println("\n目錄" + directory.getName() + "下的.txt文件");
        for (File file : txtFiles) {
            System.out.print("  " + file.getName());
        }
        //isDirectory()判斷是否為文件目錄
        if(directory.isDirectory()){
            System.out.println(directory.getPath()+" is Directory");
        }
        //isFile()判斷是否為文件
        if(directory.isFile()){
            System.out.println(directory.getPath()+" is File");
        }
        
        //File.separator輸出不同的系統中斜杠的方向
        //在windows中斜杠的方向是向右斜的\\
        //在Linux  中斜杠的方向是向左斜的//
        System.out.println("File.separator:"+File.separator);
        File f= new File("e:" + File.separator + "test" + File.separator +"file_selector_test"+File.separator+ "io.txt");
        try {
            //createNewFile()方法:創建指定文件夾下的文件,如果文件夾不存在會報"找不到指定路徑"錯誤,應該首先手動創建該文件夾。返回值為boolean
            //若沒有該文件,創建成功返回true;若又該文件則創建失敗返回false
            System.out.println(f.createNewFile());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        //delete()方法:刪除一個文件或者整個文件夾,返回值為布爾類型
        //如果刪除的是文件夾,必須保證是一個空文件夾,否則刪除失敗
        File f0 = new File("E:\\test\\file_selector_test\\io.txt");
        boolean boo=f0.delete();
        if(boo){
            System.out.println("成功刪除文件");
        }else{
            System.out.println("刪除失敗");
        }
        //調用創建的方法進行刪除文件夾以及該文件夾下的所有文件
        deleteDirectory(new File("E:\\test\\file_selector_test2"));
        
        File f1 = new File("e:" + File.separator + "test"+File.separator+"io.txt");
        //getPath()方法:將此抽象路徑名轉換為一個路徑名字符串
        System.out.println(f1.getPath());
        //getParent()方法:返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 nul
        System.out.println(f1.getParent());
        if(f1.exists()){
            f1.delete();
        }
        else{
            try{
                System.out.println(f1.createNewFile());
            }catch(Exception e){}
        }
        
        //list()方法:返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄,列出的僅是名稱。
        File f2 = new File("E:\\test\\file_selector_test");
        String[] str = f2.list();
        for(int i=0;i<str.length;i++){
            System.out.println(str[i]);
        }
        
        //掃描某個路徑下的所有文件
        findAllFiles(new File("E:\\"));
    }
    
    //刪除文件夾下的所有文件以及該文件夾
    public static void deleteDirectory(File file){
        File[] fileArray=file.listFiles();
        if(fileArray.length>0){
            for(int i=0;i<fileArray.length;i++){
                if(fileArray[i].isFile()){
                    if(fileArray[i].delete()){
                        System.out.println(fileArray[i]+"文件刪除成功");
                    }else{
                        System.out.println(fileArray[i]+"文件刪除失敗");
                    }
                }else{
                    deleteDirectory(fileArray[i]);
                }
            }
        }
        //刪除文件夾
        if(file.delete()){
            System.out.println(file+"文件夾刪除成功");
        }else{
            System.out.println(file+"文件夾刪除失敗");
        }
    }

    //掃描指定文件夾下的所有文件,並輸出
    public static void findAllFiles(File f){
        //判斷給定的路徑是否是目錄
        if(f.isDirectory()){
            File[] file = f.listFiles();
            //再依次循環進行判斷
            try{
                for(int i = 0;i < file.length;i++){
                    //繼續把內容傳入到findAllFiles方法之中進行驗證
                    findAllFiles(file[i]);
                }
            }catch(Exception e){}
        }
        else{
            System.out.println(f);
        }
    }
    
    
}

本文參考資料:

http://blog.sina.com.cn/s/blog_7a27a9bf0100s887.html

http://www.blogjava.net/tovep/archive/2010/11/07/io.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM