zoukankan      html  css  js  c++  java
  • IO File(构造函数、文件夹创建删除、文件过滤器)、递归

       IO概述  (输入input和输出output) 简写

    输出(写)Output:把内存中的数据存到持久化设备上

    输入(写)Input:把持久设备上的数据读取到内存中

    File 最关键的两个成员变量 

    file 类包含三个东西:文件:file  目录(文件夹):directory  路径:path

    路径分隔符

    系统有关的路径分隔符 window下是  “”(pathSeparator)  Linux下是:“”(separator

     File类

    类 :成员变量 成员方法 构造方法 

    package com.oracle.demo01;
    //成员变量
    import java.io.File;
    
    public class Demo01 {
        public static void main(String[] args) {
            /*File类:  最关键的两个成员变量   ; 
            文件:file
            目录(文件夹):directory
            路径:path
            路径分隔符*/
    //        与系统有关的路径分隔符  win 是 ;  linux 是 : 
            System.out.println(File.pathSeparator);  //;
    //        与系统有关的路径名称分隔符 win 是  linux  是/
            System.out.println(File.separator);   //
        }
    }

     构造函数

    package com.oracle.demo01;
    //构造函数
    import java.io.File;
    
    public class Demo02 {
        public static void main(String[] args) {
    //        第一个构造方法
            File file=new File("f:\java\a.txt");//  "\"在java中转义的 所以是双\
            System.out.println(file);
    //        第二个构造方法   父路径  子路径:适用多个文件
            File file2=new File("f:\java","a.txt");
            System.out.println(file2);
    //        第三个构造方法 :File类的父、子路径
            File parent=new File("f:\java");
            File file3=new File(parent,"a.txt");
            System.out.println(file3);
        }
        
    }

     File类获取

    创建和删除

    package com.oracle.demo01;
    //File类的获取、文件的创建、删除、判断
    import java.io.File;
    import java.io.IOException;
    
    public class Demo03 {
        public static void main(String[] args) throws IOException {
            method02();
            method03();
            method04();
            method05();
        }
        public static void method01(){
            File file=new File("f:\java\a.text");
    //        获取文件对象:绝对路径
            System.out.println(file.getAbsolutePath());
    //        举例 :File file=new File("src");  src可能根本不存在,“”里面随便写  看前面的 file为准 
    //        获取文件对象:文件名或者目录名
            System.out.println(file.getName());
    //        获取文件对象路径所对应:字符串
            System.out.println(file.getPath());//类似toString()
    //        获取文件的长度(文件的大小字节:Long类型)
            System.out.println(file.length());
        }
    //    文件创建
        public static void method02() throws IOException{
            File file=new File("f:\java\b");
            boolean flag=file.createNewFile();//如果不加后缀,默认都建文件,不是文件夹
            System.out.println(flag);
        }
    //    文件删除
        public static void method03(){
            File file=new File("F:\java\b");
    //        删除文件  java的删除 =DOS下删除  彻底删除了
            boolean flag=file.delete();
            System.out.println(flag);
        }
    //    文件判断
        public static void method04(){
            File file=new File("F:\java\a.txt");
    //        判断该文件对象所对应的文件:是否存在
            System.out.println(file.exists());
    //        判断该文件:是否是文件夹
            System.out.println(file.isDirectory());
    //        判断该文件对象:是否文件
            System.out.println(file.isFile());        
        }
    //    创建文件夹  
        public static void method05(){
            File file =new File("F:\java\B");//win下的目录名不区分大小写,最后的是目录名
            boolean flag=file.mkdirs(); //建文件夹 mkdir:建一个目录    mkdirs :创建是多级目录(推荐)
            System.out.println(flag);
        }
    }

     listFiles()方法介绍

     

    package com.oracle.demo01;
    //listFiles()方法
    import java.io.File;
    
    public class Demo04 {
        public static void main(String[] args) {
            method03();
        }
        public static void method01(){
            File file=new File("f:\java");
    //        获取该路径下的文件和文件夹
            String[] arr=file.list();
    //        遍历
            for(String s:arr){
                System.out.println(s);//显示所有文件名字
            }
        }
    //    获得数组
        public static void method02(){
            File file=new File ("f:\java");
    //        获取该路径下的文件和文件夹所对应的文件对象
            File[] files=file.listFiles();
            for(File f:files){
                System.out.println(f);
            }
        }
        public static void method03(){
            File file=new File ("f:\java");
    //        获取该路径下的文件和文件夹所对应(括号内是条件=某个类型)的文件对象
            File[] files=file.listFiles(new MyFileFileter());
            for(File f:files){
                System.out.println(f);//绝对路径:根本方法
            }
        }    
    }


    注意
    1.指定必须是目录,不然会空指针
    出现NullPointerException
    2.指定的文件夹必须存在

    文件过滤器

    FileFilterFilenameFilter都是接口

    package com.oracle.demo01;
    //过滤器
    import java.io.File;
    import java.io.FileFilter;
    
    public class MyFileFileter implements FileFilter{  //实现类
    
        @Override
        public boolean accept(File pathname) {
    //        获取文件名
            /*String filename=pathname.getName();
    //        判断文件名是否以.txt 结尾
            boolean flag=filename.endsWith(".txt");//因为上一行返回值是String,所以可以用String的方法
            return flag;*/
    //        上面代码繁琐,可以用下面一行代码表示
            return pathname.getName().endsWith(".txt");
        }
    
    }

    pm

    递归 :自己调用自己

    原理图

     

    package com.oracle.demo02;
    //递归
    public class Digui {
        public static void main(String[] args) {
            int sum=get(100);
            System.out.println(sum);
        }
    //    用递归计算1-100的和
    //    100+(1100-1)+(99-1)+(98-1)+...1
    
        public static int get(int num){
            if(num==1){
                return 1;
            }
            return num+get(num-1);
        }
    }
    package com.oracle.demo02;
    
    import java.io.File;
    
    public class Digui2 {
        public static void main(String[] args) {
            File file=new File("f:\java");
            look(file);
        }
        public static void look(File file){
    //        获取该路径所有文件和文件夹
            File[] files=file.listFiles(new MyFilter());//获得.txt文件和目录
    //        遍历
            for(File f:files){
    //            判定如果是文件夹继续寻找
                if(f.isDirectory()){ //
                    look(f);
                }else{    //不是文件夹就打印
                    System.out.println(f);
                }            
            }
        }
    }
    package com.oracle.demo02;
    
    import java.io.File;
    import java.io.FileFilter;
    
    public class MFilter implements FileFilter{
    
        @Override
        public boolean accept(File pathname) {
    //        获取以后缀是.txt的文件,如果是文件夹,那么放到File[]数组内
            if(pathname.isDirectory()){
                return true;
            }
            return pathname.getName().endsWith(".txt");
        }
    }

    注意

    1、递归要有条件限定,够停下来,否则栈内溢出

    2、虽然有条件限定,但次数不能太多

    3、构造方法不能递归

  • 相关阅读:
    vanilla单词的意思
    快速排序实现
    python下载一些包出现time out的问题解决
    神经网络浅讲:从神经网络到深度学习
    神经网络基础知识
    TCP/IP
    查找机器学习相关数据集
    [数据治理]
    【算法】——LRU
    【大数据开发工程师】面试——HBase
  • 原文地址:https://www.cnblogs.com/zs0322/p/11022739.html
Copyright © 2011-2022 走看看