IO流 :File

File

File类概述和构造方法

在java.IO包下,是具体的类,实现了两个接口,Serializable,Comparable,是文件和目录路径名的抽象表示,
image.png
IO流 :File_第1张图片

File f1 = new File(pathname:"E:\\itcast\\java.txt");
sout(f1);//重写了toString方法,直接输出封装的路径名,且文件并不一定要存在

File f2 = new File(parent:"E:\\itcast",child:"java.txt");
sout(f2);

File f3 = new File(pathname:"E:\\itcast");
File f4 = new File(f3,child:"java.txt");
sout(f4);

输出 三个构造方法都指向一样的内容
IO流 :File_第2张图片

File类创建功能

IO流 :File_第3张图片

//在E:\\itcast目录下创建一个文件
//如果文件不存在,就创建文件,并返回true;如果文件存在,就不创建文件,并返回false
File f1 = new File(pathname:"E:\\itcast\\java.txt");
sout(f1.creatNewFile());//会产生异常要在上面抛出throws IOException  会输出true 说明文件创建成功 如果再次创建就会变成false,因为文件已经存在

//在E:\\itcast目录下创建一个目录javaSE
//如果目录不存在,就创建目录,并返回true;如果目录存在,就不创建目录,并返回false
File f2 = new File(pathname:"E:\\itcast\\javaSE");
sout(f2.mkdir());//mkdir不能创建多级目录

//在E:\\itcast目录下创建一个目录javaWEB\\HTML
//如果目录不存在,就创建目录,并返回true;如果目录存在,就不创建目录,并返回false
File f3 = new File(pathname:"E:\\itcast\\javaWEB\\HTML");
sout(f3.mkdirs());//mkdirs能创建多级目录

//在E:\\itcast目录下创建一个文件javase.txt
File f4 = new File(pathname:"E:\\itcast\\javase.txt");
sout(f4.mkdir());//mkdir能创建目录 调用这个方法会变成创建目录而不是文件

//判断是创建的文件害死目录,要看调用的方法
//同一个文件目录下不能存在相同名字的文件和目录(文件夹)

输出
IO流 :File_第4张图片

File类判断和获取功能

IO流 :File_第5张图片

//创建一个file对象
File f = new File(pathname:"myFile\\java.txt");

//测试
//f.isDirectory()测试此抽象路径名表示的File是否为目录
sout(f.isDirectory());
//f.isFile()测试此抽象路径名表示的File是否为文件
sout(f.isFile());
//f.exists()测试此抽象路径名表示的File是否存在
sout(f.exists());

//f.getAbsolutePath()返回此抽象路径名的绝对路径名字符串
sout(f.getAbsolutePath());
//f.getPath()将此抽象路径名转换为路径名字符串
sout(f.getPath());/封装的路径
//f.getName()返回此抽象路径名表示的文件或目录的名称
sout(f.getName());//文件的名称


File f2 = new File(pathname:"E:\\itcast");
//f.list()返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
String[] strArray = f2.list();
for(String str : strArray){
    sout(str);//输出当前目录下文件和文件夹的名称
}

//f.getName()返回此抽象路径名表示的目录中的文件和目录的File对象数组
String[] fileArray = f2.listFiles();
for(String file : fileArray){
    sout(file);//输出当前目录下文件和文件夹的绝对路径
}

输出
IO流 :File_第6张图片
IO流 :File_第7张图片

File类删除功能

image.png

File f1 = new File(pathname:"E:\\itcaste\\java.txt");
File f2 = new File(pathname:"java.txt");//文件就和模块是同级目录
//需求1:在当前模块目录下创建java.txt文件
File f3 = new File(pathname:"myFile\\java.txt");
sout(f3.creatNewFile());

image.png
IO流 :File_第8张图片

需求2:删除当前模块目录下的java.txt文件
File f1 = new File(pathname:"myFile\\java.txt");
sout(f1.delete());

输出
IO流 :File_第9张图片

需求3:在当前模块下创建itcast目录
File f2 = new File(pathname:"myFile\\itcast");
sout(f2.mkdir());

IO流 :File_第10张图片

需求4:删除当前模块下的itcast目录
File f2 = new File(pathname:"myFile\\itcast");
sout(f2.delete());

IO流 :File_第11张图片

需求5:在当前模块下创建一个目录itcast,然后在该目录下创建一个文件java.txt
File f3 = new File(pathname:"myFile\\itcast");
sout(f3.mkdir());
File f4 = new File(pathname:"myFile\\itcast\\java.txt");
sout(f4.creatNewFile());
//在创建文件之前首先要创建目录

输出
IO流 :File_第12张图片

需求6:删除当前模块下的目录itcast,然后在该目录下创建一个文件java.txt
File f3 = new File(pathname:"myFile\\itcast");
File f4 = new File(pathname:"myFile\\itcast\\java.txt");
sout(f4.delete());//删除目录下的内容
sout(f3.delete());//删除木目录
//因为如果你要删除的目录下面有内容,该目录是不能直接删的,首先要删除目录下的内容,才能删除目录

IO流 :File_第13张图片
IO流 :File_第14张图片
image.png

递归

以编程的角度看,递归指的是方法定义中调用方法本身的现象

//不死神兔问题 
//每个月的兔子对数,1,1,2,3,5,8,……
int[] arr = new [20];

arr[0] = 1;
arr[1] = 1;
for(int i = 2;i

IO流 :File_第15张图片
IO流 :File_第16张图片

案例 递归求阶乘

IO流 :File_第17张图片
IO流 :File_第18张图片

//调用方法
int result = jc(n:5);
//输出
sout(result);
//定义一个方法
public static int jc(int n){
    if(n == 1){
        return 1;
    }else{
        return n*jc(n:n-1);
    } 
}
在内存中执行流程

IO流 :File_第19张图片
当递归到1的时候方法就结束了,方法结束就要从栈内存消失,然后利用返回值计算
IO流 :File_第20张图片
IO流 :File_第21张图片
IO流 :File_第22张图片

遍历目录

IO流 :File_第23张图片

/根据给定的路径创建一个File对象
File srcFile = new File(pathname:"E:\\itcast");
//调用方法
getAllFilePath(srcFile);


//定义一个方法,用于获取给定目录下的所有内容,参数为第一步创建的file对象 递归
public static void getAllFilePath(File srcFile){
    //获取给定的File目录下所有的文件或者目录的File数组
    File[] fileArray = srcFile.listFiles();
    //遍历该File数组,得到每一个file对象
    if(fileArray != null){
        for(File file : Array){
            //判断该File对象是否是目录
            if(file.isDirectory()){
                //是,递归调用
                 getAllFilePath(file);
            }else{
                //不是,获取绝对路径输出在控制台,也就是文件
                sout(file.getAbsolutePath());
            }
        }
    }
}

输出
IO流 :File_第24张图片

你可能感兴趣的:(java)