java.io.File

xiaoxiao2021-02-28  100

File(文件)既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。File类的实例是不可变的;也就是说,File对象表示的抽象路径名将不可改变。

利用目录过滤器获得一个受限文件列表,

import java.io.File; import java.io.FilenameFilter; //实现FilenameFilter接口 public class Filenamefilter implements FilenameFilter{ String regex=null; public Filenamefilter(String regex){ this.regex=regex; } //接口中的方法,用于选取满足要求的文件 //其中,file指的是 目标文件路径path ,name指的是文件名 public boolean accept(File file,String name){ return name.startsWith(regex); } } class DirList{ public static void main(String[] args) { //文件目录 File path=new File("D:\\工作笔记"); //list方法会为此目录对象下的每个文件名调用accept()方法,判断该文件是否包含在内 String[] strList=path.list(new Filenamefilter("规则")); for(String dirItem:strList){ System.out.println(dirItem); } } } //结果 规则有误分析1.png 规则有误分析2.png

利用匿名内部类进行改进:

class FileInnerNameFilter{ public static void main(String[] args) { File path=new File("D:\\工作笔记"); //匿名类要直接使用该变量,因此要定义为final final String regex="规则"; String[] strList=path.list(new FilenameFilter() { public boolean accept(File dir, String name) { return name.startsWith(regex); } }); for(String dirItem:strList){ System.out.println(dirItem); } } }

产生给定目录下的整个目录树中所有的文件:

public class TreeInfo { //分别保存文件和目录 List<File> files=new ArrayList<File>(); List<File> dirs=new ArrayList<File>(); public void addAll(TreeInfo other){ files.addAll(other.files); dirs.addAll(other.dirs); } public static TreeInfo walk(String path,String regex){ return recurseDirs(new File(path),regex); } public static TreeInfo walk(File start,String regex){ return recurseDirs(start,regex); } //指定处的文件开始 public static TreeInfo recurseDirs(File startDir,String regex ){ TreeInfo result=new TreeInfo(); for(File item:startDir.listFiles()){ if(item.isDirectory()){ //添加当前目录 result.dirs.add(item); //利用递归,从当前目录开始 result.addAll(recurseDirs(item,regex)); }else{ result.files.add(item); } } return result; } }

File类的一些常用方法:

public class FileTest { public static void main(String[] args) { //判断指定的文件是否存在,不存在就创建 //unix平台,分隔符是/ //windows平台,分隔符是\ String url="D:\\GoogleMaps\\Egypt"+ File.separator+"\\test"; File dir=new File(url); if(!dir.exists()){ //这是创建目录,而不是文件 //创建此抽象路径指定的目录,包括所有必需但不存在的父目录 System.out.println("创建目录:"+dir.mkdirs()); } File file=new File(dir+File.separator+"test.txt"); try { //只会适用创建文件本身,不包括父文件的创建(如果父文件不存在,需要判断) System.out.println("创建文件:"+file.createNewFile()); } catch (IOException e) { e.printStackTrace(); } System.out.println("文件是否可读:"+file.canRead()); System.out.println("文件是否可写:"+file.canWrite()); System.out.println("绝对路径名:"+file.getAbsolutePath()); System.out.println("文件名:"+file.getName()); System.out.println("父目录:"+file.getParent()); System.out.println("是否是目录:"+file.isDirectory()); System.out.println("是否是文件:"+file.isFile()); System.out.println("最近一次被修改的时间:"+file.lastModified()); System.out.println("文件的长度:"+file.length()); //原来的文件不见了 System.out.println("移动文件(相当于重新命名):"+file.renameTo(new File(dir+File.separator+"newTest.txt"))); System.out.println("路径名字符串:"+file.toString()); System.out.println("文件删除:"+file.delete()); } } //结果: 创建目录:true 创建文件:true 文件是否可读:true 文件是否可写:true 绝对路径名:D:\GoogleMaps\Egypt\test\test.txt 文件名:test.txt 父目录:D:\GoogleMaps\Egypt\test 是否是目录:false 是否是文件:true 最近一次被修改的时间:1499951806477 文件的长度:0 移动文件(相当于重新命名):true 路径名字符串:D:\GoogleMaps\Egypt\test\test.txt //因为文件被重命名,所以删除失败 文件删除:false
转载请注明原文地址: https://www.6miu.com/read-44417.html

最新回复(0)