Java IO系统——File类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjx86320/article/details/51245198

     File类具有一个欺骗性的名字,通常你会认为它对应的是一个文件,但事实并非如此。它既可以代表一个特定的文件目录,也可以代表一个目录内一系列文件的名字,FilePath似乎是一个更好的名字。它代表了与平台无关的文件和目录,如果想在程序中操作文件和目录,都可以通过File类来完成,File能新建、删除、重命名文件和目录,File不能访问文件内容本身,如果要访问文件本身,则需要使用输入/输出流。

    

     一、操作目录


     目录,我们可以理解成具体的文件夹,下面我们通过两个例子认识一下File类关于目录的操作。

     

package IO;

import java.io.*;

public class FileTest2 {
	public static void main(String[] args) throws IOException {

		// 1:传入一个不存在的路径
		File f1 = new File("test1");
		System.out.println(f1.exists());// 监测是否存在
		System.out.println(f1.isFile());// 监测是否是文件
		System.out.println(f1.isDirectory());// 监测是否是路径
		f1.mkdir();// 创建文件夹
		System.out.println(f1.exists());// 监测是否存在
		System.out.println("============================================");

		// 2:传入一个存在的路径
		File f2 = new File("test2");
		System.out.println(f2.exists());// 监测是否存在
		System.out.println(f2.isFile());// 监测是否是文件
		System.out.println(f2.isDirectory());// 监测是否是路径
		// 使用list方法来列出当前路径下的所有文件和路径
		String[] fileList = f2.list();
		System.out.println("======当前路径下所有文件和路径如下=====");
		for (String fileName : fileList) {
			System.out.println(fileName);
		}
		System.out.println("============================================");
		
	}	
}

     输出结果如下:

     

     我们通过以上的例子,可以总结到一下几点:

     1.file的构造构造函数既可以传入一个绝对路径,也可以传入一个相对路径。

     2.如果传入的字符串不存在对应的路径或文件,则file的既不能确定这个file代表文件还是路径。

     3.使用mkdir()方法创建一个文件。

     4.使用list()方法,得到该路径下的文件,得到是文件名组成的数组。


     二、操作文件

     

package IO;

import java.io.*;

public class FileTest2 {
	public static void main(String[] args) throws IOException {

		
		// 3:传入一个不存在的文件
		File f3 = new File("myfile");
		System.out.println(f3.exists());// 判断是否存在
		System.out.println(f3.isFile());// 判断是否是文件
		System.out.println(f3.isDirectory());// 判断是否是文件
		f3.createNewFile();//创建文件
		System.out.println(f3.getName());// 获得文件的名字
		System.out.println(f3.getPath());// 获得文件的路径
		System.out.println(f3.getAbsolutePath());// 获得文件的绝对路径
		System.out.println("============================================");

		// 4:传入一个存在的文件
		File f4 = new File("E:\\Computer\\04JAVA\\JavaCode2\\CrazyJava\\file\\file.txt");
		System.out.println(f4.exists());// 判断是否存在
		System.out.println(f4.isFile());// 判断是否是文件
		System.out.println(f4.isDirectory());// 判断是否是文件
		System.out.println(f4.getName());// 获得文件的名字
		System.out.println(f4.getPath());// 获得文件的路径
		System.out.println(f4.getAbsolutePath());// 获得文件的绝对路径
		System.out.println("============================================");
		
	}	
}

     输出结果如下:

     


     通过上面的代码,我们可以知道:

     1.可以获得一个文件的相对目录(File()构造函数传入的参数),也可以得到文件的绝对路径。

     2.createNewFile()方法创建新的文件。


     三、文件过滤器


     我们知道文件一般都是有后缀名的,那么如何过滤下面一个目录下的文件呢,java为我们提供了FilenameFilter接口。

package IO;

import java.io.*;

public class FileTest2 {
	public static void main(String[] args) throws IOException {


		// 5:传入一个存在目录,过滤改目录下的文件
		File f5 = new File("E:\\Computer\\04JAVA\\JavaCode2\\CrazyJava\\test2");
		MyFilter filter = new MyFilter(".txt");
		String[] files = f5.list(filter);
		for (String file : files) {
			System.out.println(file);
		}
		System.out.println("============================================");

	}

	static class MyFilter implements FilenameFilter {
		private String type;

		public MyFilter(String type) {
			this.type = type;
		}

		@Override
		public boolean accept(File dir, String name) {
			return name.endsWith(type);
		}
	}

}


     输出结果如下:

     

     从上面的程序,我们可以知道,要实现文件过滤,主要有以下步骤:

     1.实现FilenameFilter接口,重写accept方法。

     2.创建实现接口的类的实例,并指明过滤文件的类型。

     3.将接口的实现类作为File类的参数,得到该路径下过滤后的符合规定的条件的文件名数组。


     四、总结


     通过上面三部分的介绍,我们可以总结一下File这个类操作文件或目录的特点。

     1.公共:监测,判断文件/目录是否存在;是否是一个文件;是否是一个目录。

     2.文件:创建/删除文件;得到文件名;获得文件的相对路径和绝对路径。

     3.路径:创建/删除路径;得到路径下的文件名;过滤路径下的文件名。

     



猜你喜欢

转载自blog.csdn.net/zjx86320/article/details/51245198