程序地带

File类,递归


File类

文件是相关记录或存放于相同位置的数据的集合


Java中提供java.io.File类操作文件及目录


在java中使用File类对象来表示计算机中所有的文件夹以及文件


以路径作为作为找到指定文件的抽象标识


构造方法

File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。


File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。


File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。


// static String pathSeparator
// 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
System.out.println(File.pathSeparator);
// static char pathSeparatorChar
// 与系统有关的路径分隔符。
System.out.println(File.pathSeparatorChar);
// static String separator
// 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
System.out.println(File.separator);
// static char separatorChar
// 与系统有关的默认名称分隔符。
System.out.println(File.separatorChar);
// File(String pathname)
// 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File f1 = new File("F://test");// f1现在就代表f盘下test这个文件夹
f1.delete();
// File(File parent, String child)
// 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File f2=new File(f1,"1.txt");//等价于File f2=new File("F://test/1.txt");
// File(String parent, String child)
// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File f3=new File("F://test","1.txt");//等价于File f2=new File("F://test/1.txt");
## API方法
boolean canExecute()
测试应用程序是否可以执行此抽象路径名表示的文件。
boolean canRead()
测试应用程序是否可以读取此抽象路径名表示的文件。
boolean canWrite()
测试应用程序是否可以修改此抽象路径名表示的文件。
int compareTo(File pathname)
按字母顺序比较两个抽象路径名。
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean delete()
删除此抽象路径名表示的文件或目录。
boolean equals(Object obj)
测试此抽象路径名与给定对象是否相等。
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
File getAbsoluteFile()
返回此抽象路径名的绝对路径名形式。
String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
File getCanonicalFile()
返回此抽象路径名的规范形式。
String getCanonicalPath()
返回此抽象路径名的规范路径名字符串。
long getFreeSpace()
返回此抽象路径名指定的分区中未分配的字节数。
String getName()
返回由此抽象路径名表示的文件或目录的名称。
String getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
File getParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
String getPath()
将此抽象路径名转换为一个路径名字符串。
long getTotalSpace()
返回此抽象路径名指定的分区大小。
long getUsableSpace()
返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
int hashCode()
计算此抽象路径名的哈希码。
boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。
long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。
long length()
返回由此抽象路径名表示的文件的长度。
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
static File[] listRoots()
列出可用的文件系统根。
boolean mkdir()
创建此抽象路径名指定的目录。
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。
boolean setExecutable(boolean executable)
设置此抽象路径名所有者执行权限的一个便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly)
设置此抽象路径名的所有者或所有用户的执行权限。
boolean setLastModified(long time)
设置此抽象路径名指定的文件或目录的最后一次修改时间。
boolean setReadable(boolean readable)
设置此抽象路径名所有者读权限的一个便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly)
设置此抽象路径名的所有者或所有用户的读权限。
boolean setReadOnly()
标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。
boolean setWritable(boolean writable)
设置此抽象路径名所有者写权限的一个便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly)
设置此抽象路径名的所有者或所有用户的写权限。
File file = new File("F://test/a/b/c");
// boolean canExecute()
// 是否为可执行文件(能不能点,是否存)
// System.out.println(file.canExecute());
// boolean canRead()
// 是否可以读取(是否有读取权限)
// boolean canWrite()
// 是否有修改权限
// System.out.println(file.canWrite());
// boolean createNewFile()
// 创建指定文件如果不存在则创建 存在则不进行任何操作
// boolean createNewFile = file.createNewFile();
// System.out.println(createNewFile);
// boolean delete()
// 删除此抽象路径名表示的文件或目录。
// boolean delete = new File("F://test/22.txt").delete();
// boolean equals(Object obj)
// 重写Object类中的方法,判断两对象是否代表同一抽象路径文件
// boolean exists()
// 代表指定抽象路径的文件对象是否存在
// System.out.println(file.exists());
// File getAbsoluteFile()
// 返回当前对象地址或返回新的以当前路径新建字符串
// File类重写的equals与hashCode方法
// System.out.println(file.getAbsoluteFile());
// String getAbsolutePath()
// 返回此抽象路径名的绝对路径名字符串。
// System.out.println(file.getAbsolutePath());
// File getCanonicalFile()
// 返回此抽象路径名的规范形式
// String getCanonicalPath()
// 返回此抽象路径名的规范路径名字符串。
// long getFreeSpace()
// 返回此抽象路径名指定的分区中未分配的字节数。
// System.out.println(file.getFreeSpace()/1024/1024/1024);
// String getName()
// 返回由此抽象路径名表示的文件或目录的名称。
// System.out.println(file.getName());
// String getParent()
// 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
// File getParentFile()
// 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
// String getPath()
// 将此抽象路径名转换为一个路径名字符串。
// long getTotalSpace()
// 返回此抽象路径名指定的分区大小。
// System.out.println(file.getTotalSpace()/1024/1024/1024);
// boolean isAbsolute()
// 测试此抽象路径名是否为绝对路径名。
// boolean isDirectory()
// 测试此抽象路径名表示的文件是否是一个目录。
// System.out.println(file.isDirectory());
// boolean isFile()
// 测试此抽象路径名表示的文件是否是一个标准文件。
// System.out.println(file.isFile());
// boolean isHidden()
// 测试此抽象路径名指定的文件是否是一个隐藏文件。
// System.out.println(file.isHidden());
// long lastModified()
// 返回此抽象路径名表示的文件最后一次被修改的时间。
// System.out.println(new Date(file.lastModified()));
// long length()
// 返回由此抽象路径名表示的文件的字节数。
// System.out.println(file.length());
// String[] list()
// 返回文件夹中所有文件名字符串数组
// File[] listFiles()
// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
// static File[] listRoots()
// 列出可用的文件系统根。
// boolean mkdir()
// 创建此抽象路径名指定的文件夹。
//只能在存在的文件夹下继续创建
//System.out.println(file.mkdir());
// boolean mkdirs()
// 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
//创建多级目录
//file.mkdirs();
// boolean renameTo(File dest)
// 重新命名此抽象路径名表示的文件。
//File file1 = new File("F://test/a/b/c1");
//file.renameTo(file1);
// boolean setExecutable(boolean executable)
// 设置此抽象路径名所有者执行权限的一个便捷方法。
//file.setExecutable(false);
//System.out.println(file.canExecute());
// boolean setLastModified(long time)
// 设置此抽象路径名指定的文件或目录的最后一次修改时间。
//new File("f://test/1.txt").setLastModified(new Date().getTime()-3600000);

文件夹操作方法 在这里插入图片描述


File f=new File("f://test");
f.delete();//false
//delete只能删除当前文件或文件夹
//如果是文件直接删除
//如果是文件夹需要要做文件夹中没有任何文件后才能删除
//delete方法使用的是硬盘删除不会将删除文件移至回收站

文件操作方法 在这里插入图片描述


File f = new File("f://test1");
System.out.println(f.length());//返回的是文件夹本身所占大小
//文件length返回的是保存数据的字节数
//文件夹返回的是当前文件夹本身所占字节数
递归思想

递归的概念 程序调用自身的编程技巧称为递归 因为程序本身调用了自己 而自己又调用了自己 造成了类似循环的操作


注意事项:需要定义递归边界 也就是递归终止条件 否则会造成程序的一直运行


递归可以看做另一种循环,但是可以做到很多循环做不到的需求,但是由于其执行的特性,可能造成内存溢出异常,原因是因为循环每次循环体执行一次后所用资源会自动释放,而递归只有在最后一个方法执行结束后才会释放资源,如果没有设置递归边界,那么会无限占用资源最终导致内存溢出。


演示


使用递归思想输出10次helloWorld


// 使用递归思想书写程序步骤
// 1声明方法 定义方法每次执行功能
// 2方法中调用本身
// 3定义递归边界(在一定条件下停止对本身的调用)
// 使用递归思想输出10次helloworld
public static void hello(int i) {
if (i > 0) {
System.out.println("helloWorld!");
i--;
hello(i);
}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45564931/article/details/109757297

随机推荐

5_zuul 集成 Swagger

5_zuul 集成 Swagger

为什么在微服务只能访问自己工程中的api,如果要访问其他微服务提供的api那就需要更换url比如,访问微服务提供者9001的api接口文档:http://lo...

Code_27 阅读(788)

pandas取出特定行列数据

pandas取出特定行列数据类似numpy的用法,但不一样,data=pd.read_csv('train.csv',encoding=&#...

我好方^-^ 阅读(489)

postman报错 Could not get any response

postman报错 Could not get any response

错误案例:无法得到任何响应连接到时出错https://localhost:44357/api/值。为什么会发生这种情况:服务器无法发送响应:确保...

DREAM5555 阅读(502)

viper 读取 环境变量_Viper解析&加载配置

Viper解析&加载配置1Viper是什么Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性:设置默认值从JSON、TOML、YAML、HCL和...

weixin_39788960 阅读(293)

似然函数学习笔记

定义:在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。似然性,是用于在已知某些观测所得到的结果时,...

han_xj 阅读(203)