java基础之File类
File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录;
File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等;
File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作。
---------------------------------------------------------------------------------------------------
创建File对象三种方法:
//在当前目录下创建一个与aaa.txt文件名相关联的文件对象
File f1 = new File("aaa.txt");
//指明详细的路径以及文件名,请注意双斜线或用反斜杠
File f2 = new File("D:\\Java\\Hello.java");
//指明详细的路径以及目录名,请注意双斜线
File f3 = new File("D:/Java");
---------------------------------------------------------------------------------------------------
创建功能
public boolean createNewFile()创建文件 如果存在这样的文件,就不创建了
public boolean mkdir()创建文件夹 如果存在这样的文件夹,就不创建了
public boolean mkdirs()创建文件夹,如果父文件夹不存在,会帮你创建出来
删除功能
public boolean delete()
重命名功能
public boolean renameTo(File dest)
判断功能
public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
基本获取功能
public String getAbsolutePath():获取绝对路径
public String getPath():获取相对路径
public String getName():获取名称
public long length():获取长度。字节数
public long lastModified():获取最后一次的修改时间,毫秒值
高级获取功能
public String[] list()将目录下的子目录及文件的名字,返回到String数组中
public File[] listFiles()将目录下的子目录及文件的实例返回到File数组中
具体代码:
package com.etc.day15.file;
import java.io.File;
public class FileDemo_1 {
public static void main(String[] args) {
//高级获取功能将目录下的子目录及文件的名字,返回到String数组中
File file = new File("e:/job");
String [] filelist = file.list();
for(String files:filelist){
System.out.println(files);
}
System.out.println("---------------");
File[] file1 =file.listFiles();
for(File files1:file1){
System.out.println(files1.getName());
}
}
}
package com.etc.day15.file;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileDemo {
public static void main(String[] args) {
File file = new File("fileDemo");
long time = file.lastModified();//返回最后修改的毫秒数
Date date = new Date(time);
DateFormat dateformat = new SimpleDateFormat("YYYY-MM-dd kk:mm:ss");
String str = dateformat.format(date);
System.out.println("最後修改日期:"+str);
System.out.println("文件名稱:"+file.getName());
System.out.println("文件絕對路徑:"+file.getAbsoluteFile());
System.out.println("文件相對路徑:"+file.getPath());
System.out.println("是否是文件:"+file.isFile());
System.out.println("是否为 目录:"+file.isDirectory());
File file1 = new File("e:/b/a/c");
System.out.println("是否存在目录"+file1.exists());//目录是否存在,如果存在返回true
System.out.println("是否创建目录"+file1.mkdir());//创建文件夹。如果存在这样的文件夹就不创建了,已经存在返回false
System.out.println("是否创建目录"+file1.mkdirs());//创建文件夹,如果父文件夹不存在会帮你创建出来,已经存在返回false
//System.out.println("删除文件:"+file.delete());
}
}
文件过滤:
文件名过滤器接口:interface FilenameFilter
常用于过滤不符合规格的文件名
需重写accept方法自定义过滤规则,如下:
boolean accept(File dir, String name)
-- dir:表示文件的当前目录。
-- name:表示当前目录的子目录或者文件的名字。
File类中提供了使用文件名过滤器遍历目录的方法:
String[] list(FilenameFilter filter)
-- 把满足指定过滤条件的文件和目录,返回到String数组中。
File[] listFiles(FilenameFilter filter)
-- 把满足指定过滤条件的文件和目录,返回到File数组中。
package com.etc.day15.file;
import java.io.File;
import java.io.FilenameFilter;
public class FileFilter {
public static void main(String[] args) {
File file = new File("e:/驱动");
File [] filelist = file.listFiles(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".zip")){
return true;
}
return false;
}});
//遍歷
for(File f:filelist){
System.out.println(f.getName());
}
}
}