Java I/O -- File

本文介绍了Java中File类的基本概念及使用方法,详细解释了如何利用File类进行文件和目录的操作,包括创建、删除、重命名文件及目录等。此外,还通过多个示例程序展示了File类的具体应用。

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

File类

  • 一个File类的对象,表示了磁盘上的文件或目录
  • File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作
  • File类直接处理文件和文件系统
  • File类没有指定信息怎样从文件读取或向文件存储
  • File类描述了文件本身的属性
  • File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径
  • File类还可以浏览子目录层次结构
  • java.io包中的File类提供了与具体平台无关的方式来描述目录和文件对象的属性功能。其中包含大量的方法可用来获取路径、目录和文件的相关信息,并对它们进行创建、删除、改名等管理工作。因为不同的系统平台,对文件路径的描述不尽相同。为做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。
  • File类的直接父类是Object类

File类常用方法

– String getName() 返回文件名

– String getPath()

– String getAbsolutePath()

– String getParent() 返回父目录名

– boolean renameTo( File newName)

– long length()

– boolean delete()

– boolean mkdir() 根据抽象路径名创建目录

– String[] list() 返回抽象路径名表示路径中的文件名和目录名

– boolean exists() 在文件存在的情况下返回true,反之返回false

– boolean canWrite()

– boolean canRead()

– boolean isFile()

– boolean isDirectory()

 

 

示例程序

FileTest1.java

package com.fairy.io;

import java.io.File;
import java.io.IOException;

public class FileTest1 {
	public static void main(String[] args) {
		File file1 = new File("C:\\text1.txt");
		File file2 = new File("C:/text2.txt");
		File file3 = new File("C:" + File.separator + "text3.txt");

		try {
			System.out.println(file1.createNewFile());
			System.out.println(file2.createNewFile());
			System.out.println(file3.createNewFile());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

FileTest2.java

package com.fairy.io;

import java.io.File;
import java.io.IOException;

public class FileTest2 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz");

		File file2 = new File(file, "text.txt");
		
		File file3 = new File("C:/abc/xyz", "text2.txt");

		try {
			file2.createNewFile();
			file3.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

FileTest3.java

package com.fairy.io;

import java.io.File;

public class FileTest3 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz/hello");

		System.out.println(file.mkdir());
		System.out.println(file.isDirectory());
		System.out.println(file.isFile());

		File file1 = new File("C:/abc/abc/abc");

		System.out.println(file1.mkdir());
		System.out.println(file1.mkdirs());
	}
}

 

FileTest4.java

package com.fairy.io;

import java.io.File;

public class FileTest4 {
	public static void main(String[] args) {
		File file = new File("D:/Util");

		String[] names = file.list();

		for (String name : names) {
			System.out.println(name);
		}
		
		System.out.println();
		
		File[] files = file.listFiles();
		
		for (File f : files) {
			System.out.println(f.getName());
		}
	}
}

 

FileTest5.java

package com.fairy.io;

import java.io.File;

public class FileTest5 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz");

		String[] names = file.list();

		for (String name : names) {
			if (name.endsWith(".java")) {
				System.out.println(name);
			} 
		}
	}
}

 

使用FilenameFilter

– 希望能够限制由list( )方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list( )的第二种形式 (方法重载

String[ ] list(FilenameFilter FFObj)

– 该形式中,FFObj是一个实现FilenameFilter接口的类的对象 

FilenameFilter仅定义了一个方法,accept( )。该方法被列表中的每个文件调用一次。它的通常

形式如下:

boolean accept(File directory, String filename)

当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept( )方法返回true ,当这些文件没有包括在列表中时,accept( )返回false 

FileTest6.java

package com.fairy.io;

import java.io.File;
import java.io.FilenameFilter;

public class FileTest6 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz");

		String[] names = file.list(new FilenameFilter() {

			@Override
			public boolean accept(File dir, String name) {
				if (name.endsWith(".java")) {
					return true;
				}
				
				return false;
			}
		});
		
		for (String name : names) {
			System.out.println(name);
		}
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值