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

posted @ 2014-03-08 16:23  NW_KNIFE  阅读(21588)  评论(0编辑  收藏  举报