zoukankan      html  css  js  c++  java
  • JAVA基础之File类

    个人理解:

      File是个文件类,可以用其增加、删除、查找某种类型的文件或者文件夹,同时根据其成员变量的特点可以综合利用,避免出现跨系统的时候出现错误,并且查找时最好输入绝对路径,以免出现不存在的文件。使用递归时一定要主要好停止,以免栈内存溢出。

    一、简述IO操作:

    当需要把内存中的数据存储到持久化设备上的这个动作称为输出(写)output操作;

    当把持久设备上的数据读取到内存中的这个动作称为输入(读)input操作。

    这个输入和输出的动作称为IO操作。

    二、File类:

    1、文件类:

    成员变量:

    import java.io.File;
    
    public class Demo01 {
        public static void main(String[] args) {
            //File类
            //文件:File
            //目录(文件夹):directory
            //路径:path
            //路径分隔符(与系统有关的)<windows里面是 ; linux里面是 : >
            System.out.println(File.pathSeparator);  //   ;
            //与系统有关的路径名称分隔符<windows里面是  linux里面是/ >
            System.out.println(File.separator);      //  
        }
    }

    2、构造函数:

    import java.io.File;
    
    public class Demo02 {
        public static void main(String[] args) {
            File file=new File("D:\java\b.txt");  //双\是转义
            System.out.println(file);
            File file2=new File("D:\java","a.txt");//父路径、子路径--可以适用于多个文件的!
            System.out.println(file2);
            File parent=new File("D:\java");
            File file3=new File(parent,"a.txt");//File类的父路径、子路径
            System.out.println(file3);
        }
    }

    3、File类的获取及文件的创建和删除、判断:

    import java.io.File;
    import java.io.IOException;
    
    public class Demo03 {
        public static void main(String[] args) throws IOException {
            method06();
            
        }
        public static void method01(){
            File file=new File("D:\java\a.txt");
            //获取文件对象的绝对路径
            System.out.println(file.getAbsolutePath());
            File file0=new File("src");//写相对路径的话,会自动转成绝对路径,但是不去检验文件是否真实存在(只会给翻译回来,可能根本不存在) D:JAVA0322Day16src
            //获取文件对象的绝对路径
            System.out.println(file0.getAbsolutePath());
            File file00=new File("aa");//这个根本不存在  D:JAVA0322Day16aa
            //获取文件对象的绝对路径
            System.out.println(file00.getAbsolutePath());
            //获取文件对象的文件名或者目录名
            System.out.println(file.getName());
            //获取文件对象的路径所对应的字符串   类似于toString()方法
            System.out.println(file.getPath());
            //获取文件的大小(字节---Long类型)
            System.out.println(file.length());
        }
        //文件创建和删除
        public static void method02() throws IOException{
            File file=new File("D:\java\d");
            //创建文件
            boolean flag=file.createNewFile();//都是创建的文件(最好都是加上后缀的),不能是文件夹
            System.out.println(flag);
        }
        //文件删除
        public static void method03(){
            File file=new File("D:\java\d");
            //删除文件(找不回来了)
            boolean flag=file.delete();
            System.out.println(flag);
        }
        //文件判断
        public static void method04(){
            File file=new File("D:\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("D:\java\d.txt");//windows系统内文件夹名字不区分大小写,最后这个是文件夹的名字
            boolean flag=file.mkdir();
            System.out.println(flag);
        }
        //创建文件夹
            public static void method06(){
                File file=new File("D:\java\d\a\b");//mkdirs()用于创建多级目录,经常用的方法,不加s不能创建多级目录
                boolean flag=file.mkdirs();
                System.out.println(flag);
            }
    }

    4、listFiles()方法介绍

    import java.io.File;
    
    public class Demo04 {
        public static void main(String[] args) {
            method03();
        }
        public static void method01(){
            File file=new File("D:\java");
            //获取该路径下的文件和文件夹
            String[] arr=file.list();
            //遍历
            for(String s:arr){
                System.out.println(s);//返回文件的全部的名字
            }
        }
        public static void  method02(){
            File file=new File("D:\java");
            //获取该路径下的文件和文件夹所对应的文件对象
            File[] files=file.listFiles();
            for(File f:files){
                System.out.println(f);//获得的其绝对路径---根本方法
            }
        }
    }

    需要注意的是:

    ①、指定的目录也就是文件夹必须存在;

    ②、指定的必须是目录。否则会空指针。

    4、文件过滤器:

    FileFilter 与FilenameFilter都是接口:

     public static void  method03(){
            File file=new File("D:\java");
            //获取该路径下的文件和文件夹所对应(括号内为条件,也就是某个类型)的文件对象
            File[] files=file.listFiles(new MyFileFilter());
            for(File f:files){
                System.out.println(f);//获得的其绝对路径---根本方法
            }
        }
    import java.io.File;
    import java.io.FileFilter;
    //过滤器:
    public class MyFileFilter implements  FileFilter{
    
        public boolean accept(File pathname) {
            /*//获取文件名
            String filename=pathname.getName();
            //判断文件名是否以.txt结尾
            boolean flag=filename.endsWith(".txt");
            return flag;
        */
            return pathname.getName().endsWith(".txt");
        
        }
    }

    三、递归:

      在当前方法内调用自己的现象

    //递归
    public class Demo01 {
    
        public static void main(String[] args) {
            int sum=get(100);
            System.out.println(sum);
        }
        //用递归计算1-100的和
        public static int get( int num){
            if(num==1){
                return 1;
            }
            return num +get(num-1);
        }
    }
    import java.io.File;
    
    public class Demo02 {
        public static void main(String[] args) {
            File file=new File("D:\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);
                }
            }
        }
    }
    import java.io.File;
    import java.io.FileFilter;
    
    public class MyFilter    implements FileFilter {
    
        public boolean accept(File pathname) {
            //获取以.txt为后缀的文件
            //如果是文件夹,那么放到File[]数组内
            if(pathname.isDirectory()){
                return true;
            }
            return pathname.getName().endsWith(".JaVa");
        }
        
    }    

    需要注意的是:

    1、要保证递归能够停下来;

    2、递归次数不能太多;

    3、构造方法不能递归使用。

  • 相关阅读:
    [LeetCode] 199. Binary Tree Right Side View
    [LeetCode] 360. Sort Transformed Array
    [LeetCode] 146. LRU Cache
    [LeetCode] 28. Implement strStr()
    [LeetCode] 498. Diagonal Traverse
    [LeetCode] 545. Boundary of Binary Tree
    [LeetCode] 937. Reorder Data in Log Files
    软件开发之我剑!软件测试, 房子的刚性需求【原】
    c#调用Delphi的dll函数遇到的问题及解决方法
    C# 回调函数
  • 原文地址:https://www.cnblogs.com/21-forever/p/11024833.html
Copyright © 2011-2022 走看看