基础java文件操作

File : 文件
io:input输入 output输出
path : 路径
java.io.File
File的每一个实例用于表示硬盘上的一个文件或目录(实际上表示的是一个抽象路径)
File可以:
       1:可以访问其表示的文件或目录的属性信息(文件名,大小,修改时间等等)
       2:创建或删除文件及目录
       3:访问一个目录(文件夹)中的所有子项
File不能访问文件数据!!!!
public class FileDemo {
    public static void main(String[] args) {
        //访问当前项目下的demo.txt文件
        /*
            File常用构造器:
            File(String pathname)
            指定一个路径,使当前File对象表达该位置对应的文件或目录。

            这里路径使用一个字符串,路径有两种写法:
            绝对路径:从操作系统定义的"根"开始,比如windows中硬盘上的根从c盘,d盘等盘符开始
                    绝对路径的有点在于清晰明了,但是缺点就是太绝对,不能更好适应跨平台。
            相对路径:相对路径写法常见的为"./",即:当前目录
                    相对路径有更好的适应性,适合跨平台使用,缺点是不够清晰,具体位置的
                    判断要视当前程序的运行环境而定。
                    比如在IDEA中执行当前程序时,IDEA规定的"./"就是当前项目目录
         */
        //  D:/Robin/jsd2203_se/demo.txt
//        File file = new File("D:/Robin/jsd2203_se/demo.txt");
        File file = new File("./demo.txt");
        /*
            File常见方法:
            1:String getName()
              获取File对象表示的文件或目录的名字
            2:long length()
              获取当前File对象表示的文件或目录占用的硬盘空间,单位为字节

            11:27回来
         */
        String name = file.getName();
        System.out.println(name);
        long len = file.length();
        System.out.println(len);
        boolean cr = file.canRead();//是否可读
        boolean cw = file.canWrite();//是否可写
        System.out.println("是否可读:"+cr);
        System.out.println("是否可写:"+cw);
        boolean ih = file.isHidden();
        System.out.println("是否隐藏:"+ih);//是否隐藏

    }
}
parent:父母  java中我们可以理解为是父目录
File常见的构造器二:
File(File parent,String pathname)
参数1:当前File表示的文件或目录所处的父目录
参数2:当前File表示的文件或目录的地址
public class FileDemo2 {
    public static void main(String[] args) throws IOException {
        //在当前目录下新建一个目录:test
        File dir = new File("./test");
        if(!dir.exists()){
            dir.mkdirs();//创建该目录
        }
        //在test目录下新建一个文件:demo.txt
//        File file = new File("./test/demo.txt");
        File file = new File(dir,"demo.txt");
        if(!file.exists()){
            file.createNewFile();
        }

    }
}
Filter : 过滤器
accept : 接受

获取一个目录中满足条件的所有子项
重载的listFiles方法:
File[] listFiles(FileFilter filter)
该方法需要传入一个过滤器,过滤器中定义了一个过滤条件,此时listFiles方法会利用该
过滤器将该目录中所有子项经过一遍过滤器,并最终返回符合过滤器要求的所有子项。
public class LitsFilesDemo2 {
    public static void main(String[] args) {
        //获取当前目录下名字中含有字母"s"的所有子项
        File dir = new File(".");
        if(dir.isDirectory()){
            FileFilter filter = new FileFilter() {
                /*
                    该方法的作用就是该过滤器的过滤条件,
                    将参数file对象想象为是一个将要经过该过滤器的元素。
                    方法返回值表达该元素是否满足过滤器要求。
                 */
                public boolean accept(File file) {
                    String name = file.getName();//获取该文件或目录的名字
//                    int index = name.indexOf("s");
//                    return index>=0;
                    //字符串支持boolean contains(String str),用于判断当前字符串是否包含参数指定的内容
                    return name.contains("s");

//                    String regex = ".*s.*";
                }
            };
            //将过滤器插到listFiles方法中,将每个子项都经过一次过滤器并返回符合要求的。
            File[] subs = dir.listFiles(filter);
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}
访问一个目录中的所有子项
public class ListFilesDemo {
    public static void main(String[] args) {
       //访问当前目录下的所有子项
       File dir = new File(".");//"."就表示当前目录本身
       /*
            boolean isFile()
            判断当前File表示的是否为一个文件

            boolean isDirectory()
            判断当前File表示的是否为一个目录
        */
        if(dir.isDirectory()){//确保dir表示的是一个目录
            /*
                File[] listFiles()
                将当前File对象表示的目录中所有子项返回。
                返回的数组中每个File元素表示的就是其中一个子项。
             */
            File[] subs = dir.listFiles();
            System.out.println("当前目录下一共有:"+subs.length+"个子项");
            for(int i=0;i<subs.length;i++){
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }


    }
}
Filter : 过滤器
accept : 接受

获取一个目录中满足条件的所有子项
重载的listFiles方法:
File[] listFiles(FileFilter filter)
该方法需要传入一个过滤器,过滤器中定义了一个过滤条件,此时listFiles方法会利用该
过滤器将该目录中所有子项经过一遍过滤器,并最终返回符合过滤器要求的所有子项。

public class LitsFilesDemo2 {
    public static void main(String[] args) {
        //获取当前目录下名字中含有字母"s"的所有子项
        File dir = new File(".");
        if(dir.isDirectory()){
            FileFilter filter = new FileFilter() {
                /*
                    该方法的作用就是该过滤器的过滤条件,
                    将参数file对象想象为是一个将要经过该过滤器的元素。
                    方法返回值表达该元素是否满足过滤器要求。
                 */
                public boolean accept(File file) {
                    String name = file.getName();//获取该文件或目录的名字
//                    int index = name.indexOf("s");
//                    return index>=0;
                    //字符串支持boolean contains(String str),用于判断当前字符串是否包含参数指定的内容
                    return name.contains("s");

//                    String regex = ".*s.*";
                }
            };
            //将过滤器插到listFiles方法中,将每个子项都经过一次过滤器并返回符合要求的。
            File[] subs = dir.listFiles(filter);
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                File sub = subs[i];
                System.out.println(sub.getName());
            }
        }
    }
}
 make : 做
 directory : 目录
 注:mkdir实际上也是linux中的一个命令,作用就是新建一个目录(文件夹)
 创建目录
public class MkdirDemo {
    public static void main(String[] args) {
        //在当前目录下新建一个目录:demo
//        File dir = new File("./demo");
        File dir = new File("./a/b/c/d/e/f/demo");
        if(dir.exists()){
            System.out.println("该目录已存在");
        }else{
            /*
                mkdir()方法在创建目录时要求该目录所在的目录必须存在,否则创建失败
                mkdirs()方法则会在创建该目录时将所有不存在的父目录全部创建出来。
                实际开发中推荐使用mkdirs()这个方法。
             */
//            dir.mkdir();//将该目录创建出来
            dir.mkdirs();//将该目录创建出来
            System.out.println("目录已创建");
        }
    }
}
create : 创造,制造
exists : 存在
File提供了创建一个文件的方法:createNewFile()
public class CreateNewFileDemo {
    public static void main(String[] args) throws IOException {
        //在当前目录下新建一个文件:test.txt
        File file = new File("./test.txt");
        boolean exists = file.exists();//判断当前File表示的文件或目录是否真实存在
        if(exists) {
            System.out.println("该文件已经存在了!");
        }else{
            file.createNewFile();//创建它
        }
    }
}
删除一个目录
public class DeleteDirDemo {
    public static void main(String[] args) {
        //将当前目录下的demo目录删除
//        File file = new File("./demo");
        File file = new File("./a");
        if(file.exists()){//如果该目录存在
            /*
                delete()方法在删除目录时,要求目录必须是空的,否则删除失败。
             */
            file.delete();
            System.out.println("目录已删除!");
        }else{
            System.out.println("该目录不存在!");
        }
    }
}
delete : 删除
删除一个文件
public class DeleteFileDemo {
    public static void main(String[] args) {
        //将当前目录下的文件test.txt删除
        File file = new File("./test.txt");
        if(file.exists()){//如果该文件存在
            file.delete();
            System.out.println("文件已删除!");
        }else{
            System.out.println("该文件不存在!");
        }

    }
}