File类概述和其构造方法
File类:
他是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是正真的文件,仅仅是一个路径名而已。它可以存在,也可以不存在。将来是要通过具体的操作把这个路径的内容转换为具体的存在。
package com.lxg.io.file;
import java.io.File;
/**
* @author lxg
* @description 1.Filei类概述和构造方法演示
* @date 2021/10/7
*
* File类:
* 构造方法:
* File(String pathbname) 通过将给定的路径名字符串来转换为抽象路径名来创建新的File实例
* File(String parent,String child):从父路径名字符串和子路径名字符串来创建新的File类
* File(File parent,String child):从父路径名和子路径名创建新的File实例
*
*/
public class File1 {
public static void main(String[] args) {
//File(String pathbname) 通过将给定的路径名字符串来转换为抽象路径名来创建新的File实例
File file1 = new File("E:\\IO\\text1.txt");
System.out.println(file1);
//File(String parent,String child):从父路径名字符串和子路径名字符串来创建新的File类
File file2 = new File("E:\\IO","test2.txt");
System.out.println(file2);
//File(File parent,String child):从父路径名和子路径名创建新的File实例
File file3 = new File("E:\\IO");
File file4 = new File(file3,"test3.txt");
System.out.println(file4);
}
}
File类创建功能
package com.lxg.io.file;
import java.io.File;
import java.io.IOException;
/**
* @author lxg
* @description 2.File类创建功能
* @date 2021/10/7
*
*
*/
public class File2 {
public static void main(String[] args) throws IOException {
//File f = new File("E:\\IO");
//当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件,如果文件不存在则创建,
// 返回true,如果文件存在,则返回false
//f.createNewFile();
//创建由此抽象路径命名的目录
//f.mkdir();
//创建由此抽象路径命名的目录,包括任何必须但不存在的目录,创建多级目录
//f.mkdirs();
//获取绝对路径
//f.getAbsolutePath();
//-------------------------------------------------
//创建文件
File f1 = new File("E:\\IO\\java.txt");
boolean newFile = f1.createNewFile();
System.out.println(newFile);
//创建目录
File f2 = new File("E:\\IO\\JavaSE");
boolean mkdir = f2.mkdir();
System.out.println(mkdir);
//创建多级目录
File f3 = new File("E:\\IO\\JavaWeb\\HTML");
boolean mkdirs = f3.mkdirs();
System.out.println(mkdirs);
}
}
File类判断和获取功能
package com.lxg.io.file;
import java.io.File;
/**
* @author lxg
* @description File类判断和获取功能
* @date 2021/10/7
*/
public class File3 {
public static void main(String[] args) {
File f = new File("E:\\IO");
//判断是否为目录
boolean directory = f.isDirectory();
//判断是否为文件
boolean file = f.isFile();
//判断是否存在
boolean exists = f.exists();
//获取绝对路径
String absolutePath = f.getAbsolutePath();
//将抽象路径名转换为路径名字字符串
String path = f.getPath();
//返回此抽象路名名表示的文件或目录名称
String name = f.getName();
//返回此路径名表示的目录中的文件和目录的名称字符串数组
String[] list = f.list();
//返回子路径名表示的目录中的文件和目录的file对象数组
File[] files = f.listFiles();
}
}
File删除功能
package com.lxg.io.file;
import java.io.File;
import java.io.IOException;
/**
* @author lxg
* @description File类删除功能
* @date 2021/10/7
* 删除目录是的注意事项:
* 如果一个目录中由内容(目录、文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录。
*
*/
public class File4 {
public static void main(String[] args) throws IOException {
//File f = new File("E:\\IO");
//删除由此抽象路径表示的文件或目录
//boolean delete = f.delete();
//创建&删除文件
File f = new File("Java\\java.txt");
boolean newFile = f.createNewFile();
boolean delete = f.delete();
//创建目录&删除目录
File f2 = new File("Java\\a");
boolean mkdir = f2.mkdir();
boolean delete1 = f2.delete();
}
}
递归解决问题思想
package com.lxg.io.file;
/**
* @author lxg
* @description 递归
* @date 2021/10/7
*
* 递归概述:
* 一编程的角度来看,递归指的是方法定义中调用此方法本身的现象
*
* 递归解决问题的思路:
* 把一个复杂问题层层转化为一个与原问题相似的规模较小的问题来求解,
* 递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算。
*
* 递归解决问题需要找出两个内容:
* 1.递归出口:否则会出现内存提出
* 2.递归规则:与原问题相似的规模较小的问题
*
*/
public class File5 {
public static void main(String[] args) {
System.out.println(f(20));
System.out.println(jiecheng(5));
}
/**
* 递归求n的阶乘
* @param n
* @return
*/
public static int jiecheng(int n){
if(n==1){
return 1;
}else{
return n*jiecheng(n-1);
}
}
/**
* 递归解决兔子数量计算
* @param n
* @return
*/
public static int f(int n){
if(n==1 || n==2){
return 1;
}else{
return f(n-1)+f(n-2);
}
}
}
使用递归遍历目录
package com.lxg.io.file;
import java.io.File;
/**
* @author lxg
* @description 使用递归遍历目录
* @date 2021/10/7
*
* 需求:给定一个路径(E:\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
* 思路:
* - 根据给定的路径创建File类
* - 定义一个方法,用于获取给定路径目录下的所有内容,参数为第一步创建的File对象
* - 获取给定的File目录下所有的文件或者目录的File数组
* - 遍历还File数组,得到每一个File对象
* - 判断给File对象是否是目录
* 是:递归调用
* 不是:获取绝对路径输出到控制台
* - 调用方法
*
*/
public class File6 {
public static void main(String[] args) {
File f= new File("E:\\IO");
getAllFilePath(f);
}
/**
* 获取给定目录下的所有内容
* @param srcFile
*/
public static void getAllFilePath(File srcFile){
//获取给定目录下的所有文件后者目录的数组
File[] files = srcFile.listFiles();
//遍历该数组,得到每一个file对象
if(files!=null){
for (File f:files) {
//判断是否是目录
if(f.isDirectory()){
//是,递归掉用方法
getAllFilePath(f);
}else {
//不是,输出文件路径
System.out.println(f.getAbsoluteFile());
}
}
}
}
}