File类是对文件系统中的文件和文件夹进行封装的对象
绝对路径:带有前缀字符串(盘符) Windows :d:\ Linux :/ (推荐使用后者)
相对路径:不带盘符 ./test/test1.txt 当前路径 "." 父路径 ".."
File类的构造函数
1. File (String pathname)
例:File f1=new File("FileTest1.txt"); //创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt
2. File (String parent , String child)
例:File f2=new File(“D:dir1","FileTest2.txt") ;// 注意:D:dir1目录事先必须存在,否则异常
3. File (File parent , String child)
例:File f4=new File("dir3");
File f5=new File(f4,"FileTest5.txt"); //在如果 dir3目录不存在使用f4.mkdir()先创建
常见的方法:
public boolean exists( ) 判断文件或目录是否存在
public boolean isFile( ) 判断是文件还是目录
public boolean isDirectory( ) 判断是文件还是目录
public String getName( ) 返回文件名或目录名
public String getPath( ) 返回文件或目录的路径。
public long length( ) 获取文件的长度
public String[ ] list ( ) 将目录中所有文件名保存在字符串数组中返回。
File类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有:
public boolean renameTo( File newFile ); 重命名文件
public void delete( ); 删除文件
public boolean mkdir( ); 创建目录
String getAbsolutePath() 获取文件的磁盘绝对地址
File[] listFiles(FilenameFilter filter) 列取文件夹下的文件列表有过滤器有文件名过滤器file必须是文件夹才能使用
File[] listRoots() 列出可用的文件系统根
例子:(完成搜索功能)
要求:
1、指定起始路径下包含指定词的所有文件(非隐藏文件)
2、打印出全路径
用递归的想法来从文件开始遍历,找到包含关键词的全部路径。(目录结构如下:查找包含“Java”的文件)
import java.io.File; import java.io.FilenameFilter; public class IOFile03 { public static void main(String[] args) { String path = "D:/tmp"; String filter = "Java"; searchFile(path,filter); } /** * @param path 指定路径 * @param filter 过滤关键词 */ public static void searchFile(String path,String filter){ File file = new File(path); if(file == null || !file.exists()){ return; }else if(file.isDirectory()){ //是个目录 FilenameFilter filenameFilter = new FilenameFilter() { //过滤器 @Override public boolean accept(File dir, String name) { File file1 = new File(dir,name); //创建该实例 if(file1.getName().contains(filter)) System.out.println(file1.getPath()); return false; } }; file.list(filenameFilter); for (File src: file.listFiles() ) { searchFile(src.getPath(),filter); //递归的向下查找 } } } }