Java I/O系统(1)之File类?!

首先强调我自身小白对File的误解:File这个名字有一定的误导性,实际上FilePath对这个类来说是个更合适的名字,Java中的File类是文件和目录路径名的抽象形式。我们可能会认为它指代的是文件,但事实上,FIle既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。总结来说,File类主要用来获取或处理与磁盘文件相关的信息,如文件名、文件路径和修改日期等,其不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。

File类方法

构造方法:

		File(File parFile,String chString);
		//根据File类型的parFile抽象路径名,和String类型的chString路径名创建一个新的File实例。
		File(String pathname);
		//将给定的String类型的路径名字符串转换成File类型的抽象路径名来创建一个新的File类型。
		File(String parent,String child);
		//类似第一种方法,根据String类型的路径名字符串parent和相同类型的child路径名字符串创建一个新的File

File类包含的方法

		File file=new File("D:/hello.txt");
		//通过传一个String类型的pathname创建一个新的File
		System.out.println(file.canRead());
		//判断此文件是否为可读
		System.out.println(file.canWrite());
		//判断此文件是否为可写
		System.out.println(file.exists());
		//判断此文件是否存在
		System.out.println(file.getAbsolutePath());
		//获取此文件的绝对路径
		System.out.println(file.getName());
		//获取文件名
		System.out.println(file.getParent());
		//获取当前文件路径名的父路径名,如果没有父路径返回null
		System.out.println(file.isAbsolute());
		//判断当前file对象表示的是否为一个绝对路径
		System.out.println(file.isDirectory());
		//判断当前file对象表示的是否为一个路径
		System.out.println(file.isFile());
		//判断当前File对象表示的是否是一个普通文件
		System.out.println(file.lastModified());
		//获取此文件的最后修改时间
		System.out.println(file.length());
		//获取此对象表示的文件长度
		System.out.println(file.list());
		//获得当前对象指定的路径文件列表
//		System.out.println(file.list(filter));
		//获得当前对象指定的符合指定过滤器的文件列表
		System.out.println(file.mkdir());
		//创建一个由当前File对象路径名指定的文件夹
		System.out.println(file.mkdirs());
		//创建一个由当前File对象路径名指定的文件夹
//		System.out.println(file.renameTo(null));
		//将当前File对象指定的文件更名为参数File指定的路径名
//		System.out.println(file.delete());
		//删除此文件

//		output:
//		false
//		false
//		false
//		D:\hello.txt
//		hello.txt
//		D:\
//		true
//		false
//		false
//		0
//		0
//		null
//		true
//		false

值得注意的是在windows文件夹中,目录形式为:D:\EclipseWork\Test 此类样式,在File类中使用路径时,应使用 :D:/EclipseWork/Test 或者 D:\EclipseWork\Test

常用操作:

  1. 遍历目录(通过使用list()方法实现)
		File file=new File("D:/123");
		String[] fileLiString=file.list();
		for(int i=0;i<fileLiString.length;i++) {
			System.out.println(fileLiString[i]);
			System.out.println(new File("C:/123/"+fileLiString[i]).isFile());
			System.out.println(new File("C:/123/"+fileLiString[i]).length());
		}
//		output:
//		aaa.txt
//		false
//		0
//		bbb.txt
//		false
//		0
//		hello.txt
//		false
//		0
//		world.txt
//		false
//		0

2.过滤遍历目录(通过使用list(FilenameFilter)实现)
在上述操作的基础上加入和Filter

class aFilter implements FilenameFilter{
	@Override
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		return name.endsWith(".html");
	}
}

public static void main(String[] args) {
		File file=new File("D:/123");
		String[] fileLiString=file.list(new aFilter());
		//获取此路径名字符串下后缀为.html的文件
		for(int i=0;i<fileLiString.length;i++) {
			System.out.println(fileLiString[i]);
			System.out.println(new File("C:/123/"+fileLiString[i]).isFile());
			System.out.println(new File("C:/123/"+fileLiString[i]).length());
		}
	}

3.创建/删除文件

public static void main(String[] args) throws IOException{
		File file=new File("D:/123");
		if (file.exists()) {
			file.delete();
		}
		file.createNewFile();
	}

此方法中有潜在的异常情况:如果路径中的"123"不存在,或者在多线程中文件中途被删除。所以我们需要抛出这个异常。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值