美文网首页
Java io.File学习笔记

Java io.File学习笔记

作者: smmtest | 来源:发表于2017-05-19 16:32 被阅读13次
    //File里一些常用的功能、注意文件与文件夹的区分
            File file=new File("F:\\test");
            System.out.println("文件大小"+file.length());
            System.out.println("文件/文件夹上层路径"+file.getParent());
            System.out.println("文件/文件夹名字"+file.getName());
            System.out.println("文件/文件夹是否存在"+file.exists());
            System.out.println("是不是文件并且存在?"+file.isFile());
            System.out.println("是不是文件夹并且存在?"+file.isDirectory());
            System.out.println("能不能删除?如果存在则删除"+file.delete());
    
            //mkdirs的区别是如果父路径也不存在则带着父路径一起创建,创建的是文件夹,就算文件夹名有后缀,也是文件夹
            System.out.println("是否能创建文件夹(如果存在就是false)"+file.mkdir());
            File filemk=new File("F:\\test\\aaa\\bbb.txt");
            filemk.mkdirs();
    
            //createNewFile创建的是文件,并且父路径需要存在,要不然会报找不到路径的错误
            File file2=new File("F:\\1.txt");
            try {
                System.out.println("是否能创建文件(如果存在就是false)"+file2.createNewFile());
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            //输出该目录下所有文件和文件夹
            File file3=new File("F:\\test");
            File[] files=file3.listFiles();//还有其他两种带参数的方法
            System.out.println(file3.getName()+"目录下有以下文件和文件夹:");
            for (int i=0;i<files.length;i++){
                System.out.println(files[i].getName()+"是否隐藏"+files[i].isHidden());
            }
    
            //通过文件过滤接口筛选文件,实现accept方法,匿名内部类
            //.list()源码中有判断accept()的值,所以需要自己实现修改
            //FileFilter也是具有筛选功能的接口,参数不同
            String[] files2=file3.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".iml");
                }
            });
            //files2中已经是所有.iml文件的数组了
            System.out.println("后缀名为iml的文件如下:");
            for (int i=0;i<files2.length;i++){
                System.out.println(files2[i]);
            }
    

    小例子:
    输出某个文件夹下面所有子孙文件
    并且按一定的阶层排序

    
        private static int level=0;//设定层级的等级,之后分层会用到
    
        //参数传入File类型
        public static void xxx(File file){
            File[] files=file.listFiles();
            //遍历实参
            for (File subFile:files){
                //判断该层级下的文件类型
                //是否是隐藏文件
                if (subFile.isHidden()){
                    System.out.print("");
                }
                //是否是文件
                else if (subFile.isFile()){
                    StringBuffer stringBuffer=new StringBuffer();
                    //调用自定义方法
                    stringBuffer.append(appendTab());
                    stringBuffer.append(subFile.getName());
                    System.out.println(stringBuffer);
                }
                //是否是文件夹
                else if (subFile.isDirectory()){
                    StringBuffer stringBuffer=new StringBuffer();
                    stringBuffer.append(appendTab());
                     //如果是文件夹,就让level+1,因为要到下个层级去了
                    level++;
                    stringBuffer.append(subFile.getName());
                    //文件夹后面加上\以区分
                    stringBuffer.append("\\");
                    System.out.println(stringBuffer);
                    //递归自身,当判断为文件夹时,就再次进入方法继续做判断输出
                    xxx(subFile);
                    //结束递归后,就等于返回到了之前的层
                    //级,需要将level减少,要不然同层级的文
                    //件会混乱
                    level--;
                }
            }
        }
    
        //控制子孙文件前输出多少个tab
        public static String appendTab(){
            StringBuffer stringBuffer=new StringBuffer();
            for (int i=1;i<=level;i++){
                stringBuffer.append("\t");
            }
            return stringBuffer.toString();
        }
    

    结果:

    ![5]~0G26}U0}P05_ZR]M1Z8D.png](https://img.haomeiwen.com/i4428722/ab1e3ab275cf3e91.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    相关文章

      网友评论

          本文标题:Java io.File学习笔记

          本文链接:https://www.haomeiwen.com/subject/rmbyxxtx.html