Java SE 第8章流和文件--文件

Java SE 第8章流和文件–文件

一、File类可以获取文件信息,也可以对文件进行管理。File对象既可以表示文件也可以表示目录,利用它可以对文件、目录及其属性进行基本操作。

File常用方法列表如下:
File(String pathname)
boolean canRead()
boolean createNewFile()
boolean delete()
boolean exists()
String getAbsolutePath()
String getName()
String getPath()
boolean isDirectory()
boolean isFile()
long length()
boolean mkdir()
boolean renameTo(File dest)
long lastModified()

示例:创建一个File对象检验文件是否存在,若不存在就创建,然后对File类的部分操作进行演示,如文件的名称,大小等。

package ch08;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Scanner;
public class FileDemo {
    
    
	public static void main(String[] args) {
    
    
		System.out.println("请输入文件名:");
		Scanner scanner=new Scanner(System.in);
		String pathName=scanner.next();
		File file=new File(pathName);
		if(!file.exists()){
    
    
			try{
    
    
				file.createNewFile();
			}catch(IOException e){
    
    
				e.printStackTrace();
			}
		}
		System.out.println("文件是否存在:"+file.exists());
		System.out.println("是文件吗:"+file.isFile());
		System.out.println("是目录吗:"+file.isDirectory());
		System.out.println("名称:"+file.getName());
		System.out.println("路径:"+file.getPath());
		System.out.println("绝对路径:"+file.getAbsolutePath());
		System.out.println("最后修改时间:"+new Date(file.lastModified()).toString());
		System.out.println("文件大小:"+file.length());
	}
}

lastModified()方法返回文件的最后修改时间。
该时间是一个长整数,是与时间点(1970.01.01,00:00:00 GMT)之间的毫秒数。
因此通过Date类进行封装,即new一个Date对象,其参数是获取的毫秒数,然后就可以使用toString()方法显示时间,其格式为:
Dow(周几)mon(月份)dd(几号两位十进制)hh(几点两位十进制)mm(几分两位十进制)ss(秒数两位十进制)zzz(标准时区缩写)yyyy(年份)
截图:
在这里插入图片描述

二、文件列表器
File类的list方法列表:
String[] list()
File[]listFiles()
示例:定义一个类,演示利用list()方法把jdk根目录下的文件或目录的名称依次列举出来。

package ch08;
import java.io.File;
public class ListDemo {
    
    
	public static void main(String[] args) {
    
    
		File file=new File("D:\\jdk");
		if(file.isDirectory()){
    
    
			String[]fileNames=file.list();
			for(String fileName :fileNames){
    
    
				System.out.println(fileName);
			}
		}
	}

截图

List()方法将jdk根目录中的文件或目录都列举出来,但没有标明哪个是文件或目录。

示例:使用listFiles()方法将jdk根目录下的目录或文件的名称列举出来,并标明文件或目录。

package ch08;
import java.io.File;
public class ListDemo {
    
    
	public static void main(String[] args) {
    
    
		File file=new File("D:\\jdk");
		if(file.isDirectory()){
    
    
			File[]files=file.listFiles();
			for(File f :files){
    
    
				if(f.isFile()){
    
    
					System.out.println("文件:"+f);
				}else{
    
    
				System.out.println("目录:"+f);
			}
		}
	}
}
}
}

截图
在这里插入图片描述
三、具有过滤条件的list方法:
String[] list(FileNameFilter filter)
File[] listFiles(FileNameFilter filter)

FileNameFilter 是一个接口,它只有一个accept()方法,所以只需要定义一个类来实现这个接口,或者可以定义一个匿名类。

示例:定义一个类,演示利用list()方法列举出jdk根目录下所有以html或htm为后缀的网页文件。

package ch08;
import java.io.File;
import java.io.FilenameFilter;
public class HtmlList {
    
    
	public static void main(String[] args) {
    
    
		File file=new File("D:\\jdk");
		if(file.exists()&&file.isDirectory()){
    
    
			String[]fileNames=file.list(new FilenameFilter(){
    
    
				public boolean accept(File dir,String name){
    
    
					return (name.endsWith(".html")||name.endsWith("htm"));
				}
			});
			for(String fileName:fileNames){
    
    
				System.out.println(fileName);
			}
		}
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45618376/article/details/111394126