java文件以及文件夹(File)类

File类时java.io包中用来操作文件的类,通过调用File类的方法,可实现创建、删除、重命名文件等功能,使用File类的对象可以获取文件的基本信息,如文件所在的目录、文件名、文件大小、文件修改时间等。

1.创建文件对象

使用File类的构造方法能够创建文件对象,常用的File类构造方法有如下3种:

  • File(String pathname):根据传入的路径名称创建文件对象;
    • pathname:被传入的路径名称(包含文件夹)

例如,在C盘的根目录下创建文本文件1.txt,代码如下:

File file = new File("C:\\1.txt");
  • File(String parent,String child):根据传入的父路径(磁盘根目录或磁盘中的某一个文件夹)和子路径(文件名)创建文件对象;
    • parent:父路径(磁盘根目录或磁盘中的某一个文件夹),例如C:\或C:\Demo\
    • child:子路径(文件名),例如1.txt

例如,在C盘的Demo文件夹中创建文本文件1.txt,代码如下:

File file = new File("C:\\Demo\\","1.txt");
  • File(File f,String child):根据传入的父文件对象(磁盘中的某一个文件夹)和子路径(文件名)创建文件对象;
    • parent:父路径(磁盘根目录或磁盘中的某一个文件夹),例如C:\或C:\Test\
    • child:子路径(文件名),例如1.txt

例如,在C盘的Test文件夹中,再在Test文件夹中创建文本文件1.txt,代码如下:

File folder = new File("C:\\Test\\");
File file = new File(folder,"1.txt");

注意:对于Windows平台,文件路径用"\\"表示,(即"\"的转义字符)

2.文件操作

File类提供了操作文件的相应办法,常见的文件操作主要包括判断文件是否存在、创建文件、重命名文件、删除文件以及获取文件基本信息等,File类中操作文件的常用方法及说明如下表:

方法返回值说明
canRead()boolean判断文件是否可读
canWrite()boolean判断文件是否可写
createNewFile()boolean当且仅当不存在具有指定名称的文件时,创建一个新的空文件
createTempFile(String prefix,String suffix)File在默认临时文件夹中创建一个空文件,使用给定前缀和后缀生成其名称
createTempFile(String prefix,String suffix,directory)File在指定文件夹中创建一个新空文件,使用给定的前缀和后缀字符串生成其名称
delete()boolean删除指定的文件或文件夹
exists()boolean测试指定的文件或文件夹是否存在
getAbsoluteFile()File返回抽象路径名的绝对路径形式(文件或文件夹)
getAbsolutePath()String获取文件或文件夹的绝对路径
getName()String获取文件或文件夹的名称
getParent()String获取文件或文件夹的父路径
getFreeSpace()long返回此抽象路径名指定的分区中未分配的字节数
getTotalSpace()long返回此抽象路径名指定的分区大小
length()long获取文件的长度(以字节为单位)
isFile()boolean判断是不是文件
isHidden()boolean判断文件是否隐藏
lastModified()long获取文件最后修改时间
renameTo(File dest)boolean重新命名文件
setLastModified(long time)boolean设置文件或文件夹的最后一次修改时间
setReadOnly()boolean将文件或文件夹设置为只读
toURI()URI构造一个表示此抽象路径名的file:URI
getPathString获取文件或文件夹的路径名字字符串

下面是常用操作文件夹的例子,代码如下:

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) {
		File file = new File("C:\\test.txt"); // 创建文件对象
		if (!file.exists()) { // 文件不存在(程序第一次运行时,执行的语句块)
			System.out.println("未在指定目录下找到文件名为“test”的文本文件!正在创建...");
			try {
				file.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			} // 创建该文件
			System.out.println("文件创建成功!");
		} else { // 文件存在(程序第二次运行时,执行的语句块)
			System.out.println("找到文件名为“test”的文本文件!");
			if (file.isFile() && file.canRead()) { // 该文件文件是一个标准文件且该文件可读
				System.out.println("文件可读!正在读取文件信息...");
				String fileName = file.getName(); // 获得文件名
				String filePath = file.getAbsolutePath(); // 获得该文件的绝对路径
				boolean hidden = file.isHidden(); // 获得该文件是否被隐藏
				long len = file.length(); // 获取该文件中的字节数
				long tempTime = file.lastModified(); // 获取该文件最后的修改时间
				// 创建SimpleDateFormat对象,指定目标格式
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
				Date date = new Date(tempTime); // 使用“文件最后修改时间”创建Date对象
				String time = sdf.format(date); // 格式化“文件最后的修改时间”
				System.out.println("文件名:" + fileName); // 输出文件名
				System.out.println("文件的绝对路径:" + filePath); // 输出文件的绝对路径
				System.out.println("文件是否是隐藏文件:" + hidden); // 输出文件是否被隐藏
				System.out.println("文件中的字节数:" + len); // 输出该文件中的字节数
				// 输出该文件最后的修改时间
				System.out.println("文件最后的修改时间:" + time);
				file.delete(); // 查完该文件信息后,删除文件
				System.out.println("这个文件的使命结束了!已经被删除了。");
			} else { // 文件不可读
				System.out.println("文件不可读!");
			}
		}
	}
}

第一次运行的时候,如果文件不存在将自动创建,如下图:

第二次运行如下图:
 

注意:在创建File对象时,如果直接写文件名,则创建的文件为于当前项目文件夹中

3.文件夹操作

File类不仅提供了操作文件的相应方法,还提供了了操作文件夹的相应方法,常见的文件夹操作主要包括判断文件夹是否存在、创建文件夹、删除文件夹、获取文件夹中的子文件夹以及文件等。File类中操作文件夹的常用方法如下表:

方法返回值说明
isDirectory()boolean判断是不是文件
list()String[]返回字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
list(FilenameFilter filter)String[]返回字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录
listFiles()File[]返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
listFiles(FileFilter filter)File[]返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
listFiles(FilenameFilter filter)File[]返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
mkdir()boolean创建此抽象路径名指定的目录
mkdirs()boolean创建此抽象路径名指定的目录,包括所有必须但不存在的父目录

下面通过一个实例讲解File类操作文件夹的方法,代码如下:

import java.io.File;

public class FolderTest {
	public static void main(String[] args) {
		String path = "C:\\Test"; // 声明文件夹Test所在的目录
		for (int i = 1; i <= 10; i++) { // 循环获得i值,并用i命名新的文件夹
			File folder = new File(path + "\\" + i); // 根据新的目录创建File对象
			if (!folder.exists()) { // 文件夹不存在
				folder.mkdirs(); // 创建新的文件夹(包括不存在的父文件夹)
			}
		}
		System.out.println("文件夹创建成功,请打开C盘查看!\n\nC盘文件及文件夹列表如下:");
		File file = new File("C:\\"); // 根据路径名创建File对象
		File[] files = file.listFiles(); // 获得C盘的所有文件和文件夹
		for (File folder : files) { // 遍历files数组
			if (folder.isFile()) // 判断是否为文件
				System.out.println(folder.getName() + " 文件"); // 输出C盘下所有文件的名称
			else if (folder.isDirectory()) // 判断是否为文件夹
				// 输出C盘下所有文件夹的名称
				System.out.println(folder.getName() + " 文件夹");
		}
	}
}

返回结果:

递归遍历目录,代码如下:

import java.io.File;

public class Test {
	public static void main(String[] args) {
		File f=new File("C:\\Test");
		printFile(f);		
	}	
	public static void printFile(File file) {
		if(file.isDirectory()) {//判断File对象是否是目录
			File [] listFiles=file.listFiles();
			for(File temp:listFiles) {
				if(temp.isFile()) {
					System.out.println("文件:" + temp.getAbsolutePath());
				}else if(temp.isDirectory()) {
					System.out.println("目录:" + temp.getAbsolutePath());
				}
				printFile(temp);
			}
		}		
	}
}

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值