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);
}
}
}
}