java基础之文件(File)

本文深入讲解Java中File类的使用,包括构造方法、主要方法如创建文件、删除文件、获取文件属性等,以及如何通过File类进行目录和文件的操作。

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

File是文件和目录路径名的抽象表示。(既可以表示文件也可以表示目录)

通过File New出来的并不是磁盘上真实的文件,如果磁盘上有这个文件,就会形成这个文件的映射,他可以操作磁盘上的这个文件或目录,如果磁盘上没有这个文件或目录,这个new出来的文件或者目录会存在堆中。所以,通过new关键字创建的File并不是磁盘上真实的文件或目录。

File类的静态属性

static String pathSeparator——与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar——与系统有关的路径分隔符。
windows下是分号,Linux下是冒号
static String Separator——与系统有关的默认名称分隔符,它被表示为一个字符串。
static char SeparatorChar——与系统有关的默认名称分隔符。
windows下是 \,Linux下是 /

File的构造方法

File(File parent, String child) 
从父抽象路径名和子路径名字符串创建新的 File实例。  
File(String pathname) 
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。  
File(String parent, String child) 
从父路径名字符串和子路径名字符串创建新的 File实例。  
File(URI uri) 
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。  

File 的主要方法的使用

关于文件属性的方法的使用
package cn.bzu.look.dao;

import java.io.File;

public class FileDemo {
	public static void main(String[] args) {
		File file = new File("G:\\FileTest");
		//文件是否可执行
		System.out.println("文件是否可执行  "+file.canExecute());
		//文件是否可读
		System.out.println("文件是否可读 "+file.canRead());
		//文件是否可写
		System.out.println("文件是否可写  "+file.canWrite());
		//得到文件的名称或者抽象路径
		System.out.println("文件的名称或者抽象路径是 "+file.getName());
		//得到文件的绝对路径名
		System.out.println("文件的绝对路径名是  "+file.getAbsolutePath());
		
	}
}

输出结果是:

文件是否可执行  true
文件是否可读 true
文件是否可写  true
文件的名称或者抽象路径是 FileTest
文件的绝对路径名是  G:\FileTest

注:相对路径是在项目的路径下查找,对本项目的路径而言的

对文件的一些操作的方法
boolean createNewFile() 
当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。  
boolean delete() 
删除由此抽象路径名表示的文件或目录。
//以下两个方法是得到父类的路径和父类的对象,注意区别
String getParent() 
返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。  
File getParentFile() 
返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。  
String getPath() 
将此抽象路径名转换为路径名字符串。  
boolean isDirectory() 
测试此抽象路径名表示的文件是否为目录。  
boolean isFile() 
测试此抽象路径名表示的文件是否为普通文件。
//以下两个方法是得到子类的路径和子类的对象,注意区别
String[] list() 
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。  
File[] listFiles() 
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。  
//注意mkdir()和mkdirs()区别
boolean mkdir() 
创建由此抽象路径名命名的目录。  
boolean mkdirs() 
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。  

下面用代码来实现以下

	File file= new File("G:\\FileTest");
		
		File file2 = new File("G:\\FileTest\\jiangheng.txt");
		//创建新的文件
		//这里有可能会出现异常,所以要捕获一下
		boolean create = false;
		try {
			create = file2.createNewFile();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("文件是否创建成功"+create);
		//创建目录,这个创建的父目录存在
		File file3 = new File("G:\\FileTest\\hengheng");
		boolean mkdir = file3.mkdir();
		System.out.println("创建目录是否成功"+mkdir);
		//创建父目录不存在的目录,利用mkdirs,注意区分
		File file4 = new File("G:\\FileTest\\enen\\hengheng");
		boolean mkdirs = file4.mkdirs();
		System.out.println("创建目录是否成功"+mkdirs);
		//删除文件或目录,删除目录是只能删除空的目录
		File file5 = new File("G:\\FileTest\\hengheng");
		boolean del = file5.delete();
		System.out.println("删除文件是否成功"+mkdirs);
		//得到父类的路径
		String path = file4.getParent();
		System.out.println("上一级路径是"+path);
		//得到父类的对象
		File file6 = file4.getParentFile();
		System.out.println("父类对象的名称是"+file6.getName());
		//得到子类的路径,这个得到是一个String的数组
		String[] childPath= file.list();
		System.out.println("目录下的子目录是");
		for(String p : childPath) {
			System.out.println(p);
		}
		//得到子目录的对象
		File files[] = file.listFiles();
		System.out.println("得到子目录的名字是");
		for(File f : files) {
			System.out.println(f.getName());
		}

输出的结果是

文件是否创建成功true
================================
创建目录是否成功true
================================
创建目录是否成功true
================================
删除文件是否成功true
================================
上一级路径是G:\FileTest\enen
================================
父类对象的名称是enen
================================
目录下的子目录是
aaa
bbb
enen
fileTest.txt
jiangheng.txt
================================
得到子目录的名字是
aaa
bbb
enen
fileTest.txt
jiangheng.txt

List( ) 和 listFiles()方法的使用

//file类中方法的测试
    public static void fileMethod() {
        File file = new File("G:\\学习资料\\内网通");
        //返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。 
        String child[] = file.list();
        for (String f : child) {
            System.out.println(f);
        }
        System.out.println("*****************************");
        //返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 
        File[] files = file.listFiles();//如果file是个文件,则返回的结果是个空,如果file是个空目录,则返回的是个空组数组
        for (File fs : files) {
            System.out.println(fs);
        }
    }

输出的结果是

IntelliJ IDEA使用gitee版本控制-改进版.docx
Orcale客户端安装plsqldev120
sqlscript20190828.sql
程序员必知的8大排序(值得一看).doc
程序员必知的8大排序.docx
老师的代码脚本
课堂笔记.txt.bak
*****************************
G:\学习资料\内网通\IntelliJ IDEA使用gitee版本控制-改进版.docx
G:\学习资料\内网通\Orcale客户端安装plsqldev120
G:\学习资料\内网通\sqlscript20190828.sql
G:\学习资料\内网通\程序员必知的8大排序(值得一看).doc
G:\学习资料\内网通\程序员必知的8大排序.docx
G:\学习资料\内网通\老师的代码脚本
G:\学习资料\内网通\课堂笔记.txt.bak
利用递归实现对文件的删除与遍历,请看下一篇博客

利用递归实现对文件的遍历与删除

https://blog.youkuaiyun.com/weixin_43610698/article/details/91656606

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值