java IO操作File类

---恢复内容开始---

IO操作

把内存上的数据写到可持久化存储的设备上叫输出(Output)

把持久存储数据的设备写到内存上叫输入(Input)

File类

把文件和文件夹都封装成文件对象

File类获取对象

1 import java.io.File;
2 
3 public class Demo02 {
4 
5     public static void main(String[] args) {
6         File f = new File("E:\\java学习\\6月5号");
7         System.out.println(f.getAbsolutePath());
8 
9     }
返回了
E:\\java学习\\6月5号
import java.io.File;

public class Demo02 {

    public static void main(String[] args) {
        File f = new File("E:\\java学习\\6月5号");
        System.out.println(f.getName());

    }
返回了6月5号
1 import java.io.File;
2 
3 public class Demo02 {
4 
5     public static void main(String[] args) {
6         File f = new File("E:\\java学习\\6月15号");
7         System.out.println(f.length());
8 
9     }
获取了文件的大小 4096

对文件和文件夹的操作

    public static void main(String[] args) throws IOException {
        File f = new File("E:\\java学习\\6月15号\\b");
        f.createNewFile();

    }

会创建一个空文本

看一下这个文件或者目录在不在,返回boolean

1 public static void main(String[] args) throws IOException {
2         File f = new File("E:\\java学习\\6月15号\\b");
3         System.out.println(f.exists());
4 
5     }
1 public class Demo02 {
2 
3     public static void main(String[] args) throws IOException {
4         File f = new File("E:\\java学习\\6月15号\\b\\a");
5         f.mkdirs();
6 
7     }
创建多级目录文件夹,用mkdirs

listFiles()方法

1     public static void main(String[] args) throws IOException {
2         File f = new File("E:\\java学习\\6月15号");
3         String[] str = f.list();
4         for(String s:str){
5             System.out.println(s);
6         }
7 
8     }
显示此目录中文件和文件夹

1     public static void main(String[] args) throws IOException {
2         File f = new File("E:\\java学习\\6月15号");
3         File[] str = f.listFiles();
4         for(File s:str){
5             System.out.println(s);
6         }
7 
8     }显示路径和文件,文件夹

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

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

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

 文件过滤器

 获得一个目录下的所有文件再进行筛选

package com.orcale.demo01;

import java.io.File;
import java.io.FileFilter;

public class MFile implements FileFilter{

    过滤器方法
    public boolean accept(File pathname) {
        // TODO 自动生成的方法存根
        String str = pathname.getName();
        boolean flag = str.endsWith(".png");  把获取到的文件对象结尾是.png的放到数组中去
return flag; } }
1 public static void method02(File f){
2         File[] f1 = f.listFiles(new MFile());  
3         for(File f2:f1){
4             System.out.println(f2);
5         }
6     }
8 }

递归

自己调用自己,分为2种,直接递归和间接递归

直接递归就是自己调用自己的方法

间接递归是,A调用B,B调用C

计算1-n之间的乘积,使用递归完成

public static int method3(int n){
        if(n==1){
            return 1;
        }
        return n*method3(n-1);
    }
}

输出结果:System.out.println(method3(5));

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

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

 1 public static void method04(File f){
 2         File[] f1 = f.listFiles();
 3         for(File f2:f1){              
 4             if(f2.getName().endsWith("docx")){   先判定结尾,让递归一次调用
 5             System.out.println(f2);
 6             }
 7                 if(f2.isDirectory()){   
 8                 method04(f2);
 9                 }
10             }
11     }

猜你喜欢

转载自www.cnblogs.com/wangrongchen/p/9196222.html