File

File类概述和构造方法

在java.IO包下,是具体的类,实现了两个接口,Serializable,Comparable,是文件和目录路径名的形象示意,

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);

输入 三个构造方法都指向一样的内容

File类创立性能

//在E:\\itcast目录下创立一个文件//如果文件不存在,就创立文件,并返回true;如果文件存在,就不创立文件,并返回falseFile f1 = new File(pathname:"E:\\itcast\\java.txt");sout(f1.creatNewFile());//会产生异样要在下面抛出throws IOException  会输入true 阐明文件创建胜利 如果再次创立就会变成false,因为文件曾经存在//在E:\\itcast目录下创立一个目录javaSE//如果目录不存在,就创立目录,并返回true;如果目录存在,就不创立目录,并返回falseFile f2 = new File(pathname:"E:\\itcast\\javaSE");sout(f2.mkdir());//mkdir不能创立多级目录//在E:\\itcast目录下创立一个目录javaWEB\\HTML//如果目录不存在,就创立目录,并返回true;如果目录存在,就不创立目录,并返回falseFile f3 = new File(pathname:"E:\\itcast\\javaWEB\\HTML");sout(f3.mkdirs());//mkdirs能创立多级目录//在E:\\itcast目录下创立一个文件javase.txtFile f4 = new File(pathname:"E:\\itcast\\javase.txt");sout(f4.mkdir());//mkdir能创立目录 调用这个办法会变成创立目录而不是文件//判断是创立的文件害死目录,要看调用的办法//同一个文件目录下不能存在雷同名字的文件和目录(文件夹)

输入

File类判断和获取性能

//创立一个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);//输入当前目录下文件和文件夹的绝对路径}

输入

File类删除性能

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());


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

输入

需要3:在以后模块下创立itcast目录File f2 = new File(pathname:"myFile\\itcast");sout(f2.mkdir());

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

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

输入

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



递归

以编程的角度看,递归指的是办法定义中调用办法自身的景象

//不死神兔问题 //每个月的兔子对数,1,1,2,3,5,8,……int[] arr = new [20];arr[0] = 1;arr[1] = 1;for(int i = 2;i<arr.length;i++){    arr[i] = arr[i - 1] + arr[i - 2];}sout(arr[19]);//用递归来解决问题/*递归解决问题,首先就是定义一个办法:定义一个办法f(n)示意第n个月的兔子对数那么,第n—1个月的兔子对数应该如何示意呢?f(n-1)同理,第n—2个月的兔子对数应该如何示意呢?f(n-2)*/sout(f(20));public static int f(int n){    if(n==1||n==2){        return 1;    }else{        return f(n:n-1)+f(n:n-2);    } }//抛出error StackOverFlowError:当堆栈溢出产生时抛出一个应用程序递归太深//递归解决问题肯定要有进口,不然就始终递归


案例 递归求阶乘


//调用办法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);    } }
在内存中执行流程


当递归到1的时候办法就完结了,办法完结就要从栈内存隐没,而后利用返回值计算


遍历目录

/依据给定的门路创立一个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());            }        }    }}

输入