java.io.File
来源:互联网 发布:overturn软件 编辑:程序博客网 时间:2024/06/05 23:56
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
阅读全文
0 0
- File类java.io.File
- 类 java.io.File
- java file io
- java.io.File类
- Java.IO.File
- Java IO---File 类
- java IO-File类
- java.io.File
- Android:java.io.File
- Java IO--File类
- java io 之 File
- Java.io.File详解
- java.io.File类
- Java IO --File
- Java IO之File
- JAVA IO------File
- 15.Java IO: File
- Java IO:File 类
- 递归相加
- hdu1022Train Problem I(栈的简单应用)
- CaysnPrinter
- fopen,fseek,fread,fclose
- javascript
- java.io.File
- 99乘法表
- 表格和其他的一些学习
- BZOJ 2140 稳定婚姻 Tarjan 强连通分量
- 菜鸟程序员的成长之路
- 1154. 【GDOI2003】购物
- CountDownLaunch
- 【剑指Offer】面试题41:和为S的两个数
- html 第三天