1、File类
- File类在java.io.*包下
- 创建文件对象
- File myFile;
- myFile = new File(“myfile.txt”);
- myFile = new File(“Mydocs”,“myfile.text”) 两个参数分别是指定的父路径和文件名
- 在Java中,将文件路径也当做文件来处理
2、File对象常用方法
-
和文件名相关
String getName()//取得文件或者目录的名字
String getPath()//取得文件或者目录的路径
String getAbsolutePath() //取得文件或者目录的绝对路径
String getParent()// 取得文件或者目录的根路径
boolean renameTo(File newName)//给File代表的文件改名文件检测
boolean exists()//判断文件或目录是否存在
boolean canWrite() //判断文件是否可写
boolean canRead() //判断文件是否可读
boolean isFile()//判断File对象是否代表文件
boolean isDirectory() //判断File对象是否代表目录
boolean isAbsolute() //判断File对象代表文件或目录是否是绝对路径名表示
-
获取常规文件信息
long lastModified()//返回File对象代表文件或目录最后一次修改的时间
long length()//返回File对象代表文件的长度(字节)
boolean delete()//删除File对象代表文件或目录 目录操作
boolean mkdir()//创建由File对象代表的目录
String[] list() //如果File对象代表目录,则返回该目录下所有文件和目录列表
3、文件过滤
- 回调----通过在File中的list()方法中加入FileNameFilter参数,可以只将满足条件的文件列出来
- 策略设计模式----FileNameFilter是一个接口,只有一个accept()方法需要实现
4、实例代码:将本地文件读取出来
package test;
import java.io.File;
import java.io.FilenameFilter;
class JavaFilter implements FilenameFilter {
public JavaFilter()
{
}
/**
*只接受java文件,策略
*/
public boolean accept(File dir,String name)
{
File f = new File(dir,name);
//如果接收到的文件还是一个目录
if(f.isDirectory())
//递归搜索
{
String[] javaFiles=f.list(new JavaFilter());
//直到文件是文件名而不是目录,继续执行下面的代码
for(int i=0;i<javaFiles.length;i++)
{
System.out.println(javaFiles[i]);
}
}
//返回只有java后缀的文件名
return name.endsWith(".java");
}
}
public class JavaList {
public static void main(String args[])
{
//创建File对象 (Java中可以把文件目录当做文件,这里的D:/test1就是一个目录下的文件夹)
File currDir=new File("D:/test1");
//如果文件是一个目录
if (currDir.isDirectory())
{String[] javaFiles=currDir.list(new JavaFilter());
//file.list()表示如果File对象代表目录,则返回该目录下所有文件和目录列表。此处就是,将list内符合条件的文件名全部返回到String数组中
//将数组里的文件名输出
for(int i=0;i<javaFiles.length;i++)
{
//将数组输出
System.out.println(javaFiles[i]);
}
}
}
}