JavaSE File(文件类)

本文详细介绍了Java中的File类,包括其概述、创建、删除、判断和获取等方法的使用,如createNewFile()、mkdirs()、delete()、exists()、getAbsolutePath()等,并提供了相关方法的测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、File(文件类)概述

  • File类和四大IO流没有关系,所以File类不能完成文件的读和写
  • File对象代表文件和目录路径名的抽象表示形式,如C:\Program Files\Java\jdk1.8.0_131\bin,主要用于文件和目录的创建、文件的查找和文件的删除等,一个File对象有可能对应的是目录,也可能对应的是文件,所以File只是一个路径名的抽象表示形式

二、File类中的方法

1. 创建

  • createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false
  • mkdir() 在指定位置创建一个单级文件夹
  • mkdirs() 在指定位置创建一个多级文件夹
  • renameTo(File dest) 如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,且不能操作文件夹

2. 删除

  • delete() 删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值
  • deleteOnExit() JVM 退出时删除文件或者文件夹,用于删除临时文件,无返回值

3. 判断

  • exists() 文件或文件夹是否存在
  • isFile() 是否是一个文件,如果不存在,则始终为false
  • isDirectory() 是否是一个目录,如果不存在,则始终为false
  • isHidden() 是否是一个隐藏的文件或是否是隐藏的目录
  • isAbsolute() 测试此抽象路径名是否为绝对路径名

4. 获取

  • getName() 获取文件或文件夹的名称,不包含上级路径
  • getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系,返回的是定义时的路径对应的相对路径,但不会处理“.”和“…”的情况
  • getCanonicalPath() 返回的是规范化的绝对路径,相当于将getAbsolutePath()中的“.”和“…”解析成对应的正确的路径
  • length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L
  • getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null
  • getPath() 将此抽象路径名转换为一个路径名字符串,返回的是定义时的路径
  • lastModified() 获取最后一次被修改的时间

5. 文件夹相关

  • static File[] listRoots() 列出所有的根目录(Window中就是所有系统的盘符)
  • list() 返回目录下的文件或者目录名,包含隐藏文件,对于文件此操作会返回null(NullPointerException)
  • listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件,对于文件此操作会返回null(NullPointerException)
  • list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录,对于文件此操作会返回null(NullPointerException)
  • listFiles(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录,对于文件这样操作会返回null(NullPointerException)

三、常用方法测试用例

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileTest {
	public static void main(String[] args) throws IOException {
		
		// 创建一个File对象
		File f1 = new File("D:\\file");
		
		// 判断是否存在
		System.out.println(f1.exists());
		
		// 如果D:\file不存在,则以文件的形式创建出来
//		if(!fl.exists()) {
//			// 以文件形式创建
//			fl.createNewFile();
//		}
		
		// 如果D:\file不存在,则以目录的形式创建出来
//		if(!f1.exists()) {
//			f1.mkdir();
//		}
		
		
		// 创建多级目录
		File f2 = new File("D:\\m\\a\\y\\d\\a\\y");
//		if(!f2.exists()) {
//			// 创建多级目录
//			f2.mkdirs();
//		}
		
		
		File f3 = new File(".\\Java study\\自学整理笔记\\Java自学.md");
		// 返回的是定义时的路径
		System.out.println(f3.getPath()); // .\Java study\自学整理笔记\Java自学.md
		
		// 获取文件的父路径
		System.out.println(f3.getParent()); // .\Java study\自学整理笔记
		
		// 获取文件的父路径的文件名
		System.out.println(f3.getParentFile()); // .\Java study\自学整理笔记
		
		// 获取文件的绝对路径(返回的是定义时的路径对应的相对路径,但不会处理“.”和“..”的情况)
		System.out.println(f3.getAbsolutePath()); // D:\2020_06 eclipse workspace\IO\.\Java study\自学整理笔记\Java自学.md
		
		// 返回的是规范化的绝对路径,相当于将getAbsolutePath()中的“.”和“..”解析成对应的正确的路径
		System.out.println(f3.getCanonicalPath()); // D:\2020_06 eclipse workspace\IO\Java study\自学整理笔记\Java自学.md
		
		
		File f4 = new File("D:\\Linux study\\Linux基础终端控制器操作.md");
		// 获取文件名
		System.out.println(f4.getName()); // Linux基础终端控制器操作.md
		
		// 判断是否是一个目录
		System.out.println(f4.isDirectory()); // false
		
		// 判断是否是一个文件
		System.out.println(f4.isFile()); // true
		
		// 获取文件最后一次修改时间
		Long l = f4.lastModified(); // 从1970年到现在的总毫秒数
//		System.out.println(l);
		Date time = new Date(l);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
		String str = sdf.format(time);
		System.out.println(str); // 2020-07-24 08:20:14:799
		
		// 获取文件大小(字节数)
		System.out.println(f4.length()); // 27734
		
		
		File f5 = new File("D:\\MayDay");
//		File f5 = new File("D:\\MayDay\\五月天-仓颉.flac"); // 对于文件此操作会返回null(NullPointerException)
		// 获取当前目录下所有的子文件
		File[] listFiles = f5.listFiles();
		for (File file : listFiles) {
			System.out.println(file.getName()); // 五月天-仓颉.flac  五月天-后青春期的诗.flac  五月天-如烟.flac  五月天-转眼.flac
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逐渐江江江江化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值