File

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

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

因此我们把这种输入和输出动作称为IO操作。

 

 

//相对路径:相对本工程的路径

       File file=new File("src");

      

       //获取绝对路径

       file.getAbsolutePath();

      

       //获取文件夹名

       file.getName();

       //获取该文件的字符串路径

       file.getPath();

       //获取这文件夹的长度

       file.length();

新建文件:

       //1.不能创建同名文件

       //2.不能创建文件夹

       File file=new File("D:\text\c.JaVa");

       file.createNewFile();//返回一个布尔值,判断是否创建成功

      

创建文件夹:

       file.mkdir();

创建多级文件夹

       file.mkdirs();

   

//判断该File指定的文件或文件夹是否存在

file.exists();

 

    //判断该File指定的文件或文件夹是否是文件夹(目录)

    file.isDirectory();

 

    //判断该File指定的文件或文件夹是否是是文件

    file.isFile();

   

   

    //删除文件或文件夹

    file.delete();

File.pathSeparator  路径分隔符 

Windows系统 ;  Linux系统 :

listFiles()方法

list() 返回一个字符数串组,为指定路径中的文件名

listFiles() 返回一个所有路径名的File[]

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1,指定的目录必须是存在的,

2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

 

文件过滤器

listFiles(FileFilter  filter)重载方法:返回路径名File[],并且符合括号中指定过滤的文件和目录

FileFilter 接口

方法:accept(File pathname);测试指定路径名是否包含在指定文件中,accept方法接受一个参数,这个参数就当前文件或文件夹对象

返回值  boolean

需要自定义类接受FileFilter接口

列: File file=new File("D:\text");

       File[] files=file.listFiles(new MyFileFilter());

       for(File f:files){

           System.out.println(f);

       }

public class MyFileFilter implements FileFilter{

        public boolean accept(File pathname){

          

           return pathname.getName().toLowerCase().endsWith(".java");

        }

}

getName()获取文件名,toLowerCase(),大写转为小写,endsWith(".java");判断以什么结尾(“.java”);

 

 

 

 

递归

递归,指在当前方法内调用自己的这种现象

注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

递归打印指定文件下的所有子目录:

 

File file=new File(“D:\text”);

public static void geta(File file){

File[] files=file.listFiles(new My());

for(File f:files){

           if(f.isDirectory()){//判断如果是文件夹就继续调用

              geta(f);

           }

           if(f.isFile()){//判断是文件 打印

              System.out.println(f);

           }

             

}

}

public class My implements FileFilter{

    public boolean My(File pathname){

       if(pathname.isDirectory()){

           return true;

       }

       return pathname.getName().toLowerCase().endsWith(".txt");

    }

}

原文地址:https://www.cnblogs.com/hhthtt/p/10632543.html