首页 > 代码库 > Java的File类

Java的File类

1.File类概述

File类是java.io包下代表与平台无关的文件和目录。File能新建,删除,重命名文件盒目录,但是File不能访问文件内容本身。如果要访问文件内容本身,就需要使用输入,输出流。

2.访问文件和目录

File类可以使用文件路径字符串来创建File实例,该路径可以是绝对路径也可以是相对路径。在默认情况下,系统总是依据用户的工作路径来解释相对路径,这个路径由系统属性"user.dir"指定。

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

public class FileTest {
	public static void main(String[] args) {
		String path="src/com/t/file.txt";
		File file=new File(path);//新建一个File实例
                File dir=new File("src");//新建一个File实例
		/*
		 * 访问文件名或目录名相关的方法
		 */
		file.getName();//获取文件名
		file.getPath();//获取相对路径名
		file.getAbsolutePath();//获取绝对路径名
		file.getParent();//获取父路径名(即文件或目录所在目录)
		file.renameTo(new File("src/com/t/lavor_zl.txt"));//重命名此File对象所对应的文件或目录,如果重命名成功返回true,否则返回false
		
		/*
		 * 文件或目录检测方法,返回类型是boolean,若为真返回true,若为假返回false
		 */
		file.exists();//判断File对象所对应的文件或目录是否存在
		file.canWrite();//判断File对象所对应的文件或目录是否可写
		file.canRead();//判断File对象所对应的文件或目录是否可读
		file.canExecute();//判断File对象所对应的文件或目录是否可执行
		file.isFile();//判断File对象所对应的对象是否是文件
		file.isDirectory();//判断File对象所对应的对象是否是目录
		file.isAbsolute();//判断File对象所对应的文件或目录是否是绝对路径
		
		/*
		 * 获取常规文件或目录信息
		 */
		file.lastModified();//返回文件或目录最后修改时间
		file.length();//返回文件或目录的内容的长度
		
		/*
		 * 文件和目录操作相关方法
		 */
		try {
			file.createNewFile();//当此File对象所对应的文件不存在时,创建一个File对象所指定的新文件,若果创建成功则返回true,否则返回false
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		dir.mkdir();//试图创建一个File对象所对应的目录,若果创建成功返回true,否则返回发false
		dir.list();//列出File对象的所有子文件名和路径名,返回String数组
		dir.listFiles();//列出File对象的所有子文件和路径,返回File数组
		file.deleteOnExit();//注册一个删除钩子,指定当Java虚拟机退出时,删除File对象所对应的文件或目录
		file.delete();//删除File对象所对应的文件或目录
		
	}

}

3.文件过滤器

在File类的lsit()方法中可以接受一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。
FilenameFilter接口里包含了一个accep(File dir,String name)方法,该方法将依次对指定File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或文件。

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

public class FilenameFilterTest {
	public static void main(String[] args) {
		File dir=new File("src");//创建一个目录的实例
		System.out.println(dir.getAbsolutePath());
		String[] nameList=dir.list(new FilenameFilter() {	
			@Override
			public boolean accept(File dir, String name) {
				
				return name.endsWith(".java");//如果文件名以.java结束,则返回true
			}
		});
		try{
			for(String name:nameList){
				System.out.println(name);
			}
		}catch(NullPointerException e){
			e.printStackTrace();
		}
	}
}

PS:Windows的路径分隔符是反斜杠(\),而反斜杠(\)在Java程序中代表转移字符,所以在Windows下使用路径分隔符时要用双反斜杠(\\),或者使用Java与平台无关的路径分割符:斜杠(/)。

Java的File类