黑马程序员技术交流社区

标题: File类的相关操作 [打印本页]

作者: outsider1020    时间: 2014-12-23 11:10
标题: File类的相关操作
public class fileDemo1 {
         public static void main(String [] args ) {
                 File file= new File("d:" +File. separator+"own.txt" );
                 File file= new File("d:\\own.txt" );
         //     File file=new File("d:/own.txt");Java程序支持将斜线当成平台无关的路径分隔符
                 if (file. exists()) {
                         System .out. println("文件已存在" );
                         file .delete() ;
                         System .out. println("文件已删除" );
                 }else{
                         try {
                                file .createNewFile() ;
                         } catch (IOException e) {
                                e .printStackTrace() ;
                         }
                 }
}
//递归查找指定文件是否存在
         private static void list(File f) {
                 //判断给定文件是否为空
                 if (f== null) {
                         return;
                 }
                 //如果文件不为空,判断是否是目录
                 if (f. isDirectory()) {
                        File [] fs =f. listFiles();
                         for (File file : fs ) {
                                 list(file );
                         }
                 }else{
                         //判断文件是否是需要查找的文件
                        String name=f .getAbsolutePath() ;
                         if (name. endsWith(".exe" )) {
                                System .out. println(name );
                         }
                 }
使用过滤器来查找指定文件:
     FileFilter与FilenameFilter二者是相似的
(1)自定义过滤器来实现FileFilter接口,实现其accept()方法即可,在此方法中创建过滤器的过滤规则
//过滤掉指定路径下的.exe文件
       import java. io.File ;
     import java. io.FileFilter ;

public class fileDemo4 {
         public static void main(String [] args ) {
                File file=new File ("d:"+ File.separator +"soft") ;//
File[] f=File.listFiles(FileFilter filter)
          返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。文件名过滤器作为参数
                File [] ff =file. listFiles(new OwnFilter()) ;
                System .out. println("文件的数量是:" +ff. length);
                 for (File file2 : ff ) {
                        System .out. println(file2 .getName()) ;
                 }

         }

}
class OwnFilter implements FileFilter {
         public boolean accept( File pathname) {
          //FileFilter的accept(File pathname)方法,该方法将依次对指定File的所有子目录或者文件进行迭代,如果该方法返回true,则          list()方法会列出该子目录或者文件
                 if (pathname. getName(). indexOf(".exe" )==-1 ) {
                         return true ;
                 }
                System .out. println("OwnFilter.accept()......" +pathname. getName());
                 return false ;
         }
        
}
(2)自定义过滤器来实现FilenameFilter接口,实现其accept()方法即可,在此方法中创建过滤器的过滤规则
import java. io.File ;
import java. io.FilenameFilter ;

public class fileDemo3 {
         public static void main(String [] args ) {
                File file=new File (".") ;
                String [] nameList =file. list(new MyFilenameFilter()) ;
                 for (String string : nameList ) {
                        System .out. println(string );
                 }
         }

}
//定义自己的FilenameFilter实现类
class MyFilenameFilter implements FilenameFilter {
//FileFilter的accept(File pathname)方法,该方法将依次对指定File的所有子目录或者文件进行迭代,如果该方法返回true,则          list()方法会列出该子目录或者文件
         public boolean accept( File dir, String name) {
                 //如果文件名以.java结尾,或者文件对应一个路径即文件是一个目录,则返回true
                 return name. endsWith(".java" ) || new File(name ).isDirectory ();
         }
        
}

作者: 后悔药    时间: 2014-12-23 11:11
总结的不错,赞一个
作者: outsider1020    时间: 2014-12-23 17:04
后悔药 发表于 2014-12-23 11:11
总结的不错,赞一个

Thank you 思密达!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2