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

文件夹操作方法

方法或常量类型描述
public boolean mkdir()方法创建单级目录
public boolean mkdirs()方法创建目录且允许创建多级目录
public boolean isDirectory()方法判断给定的路径是否为目录
publicboolean delete()方法删除文件或目录
public boolean renameTo(File dest)方法重命名文件或目录
public File[] listFiles()方法列出指定目录的全部文件
public String[] list()方法列出指定目录的子目录及文件的名称
		File f=new File("f://test");
		f.delete();//false
		//delete只能删除当前文件或文件夹
		//如果是文件直接删除
		//如果是文件夹需要要做文件夹中没有任何文件后才能删除
		
		//delete方法使用的是硬盘删除不会将删除文件移至回收站

文件操作方法

方法类型描述
public boolean createNewFile()方法创建新文件
public boolean delete()方法删除文件或目录(只能先删除文件 再删目录)
public boolean exists()方法判断文件是否存在
public long length()方法返回文件的大小
public String getPath()方法返回文件的路径信息
		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);
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值