文件常用方法
- boolean exists() 该路径表示的文件或目录是否存在
- long length() 返回文件的长度
- boolean canRead() 文件是否可读
- boolean canWrite() 文件是否可写
- boolean delete() 删除路径名表示的文件或目录
- String getName() 返回文件或目录的名称
- String getPath() 将路径名转换为路径字符串
- boolean isFile() 路径名表示的是否是普通文件
- boolean createNewFile() 当该名称的文件不存在时,由该路径创建一个新文件
public static void main(String[] args) throws IOException {
// 文件
// (1) 创建File对象 File(String pathname)
File f = new File("f:\\data\\a.txt");//绝对路径名
File f = new File("f:/data/a.txt");//绝对路径名
File f = new File("a.txt");//相对路径名
// (2) File(String parent, String child)
File f = new File("f:/data","a.txt");
// (3) File(File parent, String child)
File fe = new File("f:/data");
File f = new File(fe,"a.txt");
// 1. 文件是否存在 存在返回true
System.out.println(f.exists());
// 2. 文件不存在时创建文件
f.createNewFile();
// 3. 获得文件的名字
System.out.println(f.getName());// a.txt
// 4. 获得文件的路径(与创建对象时是相对还是绝对路径有关)
//File f = new File("f:/data/a.txt");
System.out.println(f.getPath());// f:\data\a.txt a.txt
//File f = new File("a.txt"); 相对路径指向项目目录下
System.out.println(f.getPath()); //F:\workspace22\Project22\a.txt
// 获得绝对路径
System.out.println(f.getAbsolutePath());// F:\workspace22\Project22\a.txt
// 5. 是否可以读
System.out.println(f.canRead());// true
// 6. 是否可以写
System.out.println(f.canWrite());// true
// 7. 是否是 文件
System.out.println(f.isFile());// true
// 8. 获得文件的长度 long 文件内容的字节数(英文字母 1 ,中文 2)
System.out.println(f.length());// 0
// 9.
f.delete();
}
目录常用方法
- boolean isDirectory() 测试路径表示的是否为目录
- boolean exists() 该路径表示的文件或目录是否存在
- String[] list() 返回目录中的文件和目录
- File[] listFiles() 返回目录中的文件和目录的对象数组
- boolean mkdir() 当目录不存在时创建
- boolean mkdirs() 当目录不存在时创建,若父目录不存在则同时创建父母录
// 目录
File f = new File("f:/data");
// 1. 是否是目录
System.out.println(f.isDirectory());// true
// 2. 是否存在
System.out.println(f.exists());// true
System.out.println("---------------------------");
// 3. 创建目录
File f1 = new File("f:/data1");
System.out.println(f1.exists());//false
// 创建 : 若父目录存在可以创建,不存在则创建失败
f1.mkdir();
System.out.println("-----------------------");
//----------------------------------------------------
File f2 = new File("f:/data2/data3");
System.out.println(f2.exists());
// 创建: 父目录不存在 可以 创建父目录
f2.mkdirs();
获得目录内容
使用过滤器
FilenameFileter :文件名过滤器
@FunctionalInterface
public interface FilenameFilter {
// dir -> 目录 ,父路径 name -> 文件名,子目录名
boolean accept(File dir, String name);//测试指定文件是否包含在文件列表中。
}
list()方法返回的数组中存储的是文件名,所以用文件名过滤器
File f = new File("f:/data");
// 获得 目录的内容
// 1. 获得 目录下 的 子目录和文件 的String 数组
String [] fs = f.list();
// 查看 data下的所有 java文件
fs = f.list(new FilenameFilter() {//匿名内部类形式
@Override
public boolean accept(File dir, String name) {
// java文件
return name.endsWith("java");
}
});
Arrays.stream(fs).forEach(System.out::println);
// jpg
fs = f.list((dir,name)-> name.endsWith("jpg"));//lambda表达式
Arrays.stream(fs).forEach(System.out::println);
FileFilter:文件过滤器
@FunctionalInterface
public interface FileFilter {
/**
* pathname:路径
*/
boolean accept(File pathname);
}
listFiles()方法返回的是File对象数组,用文件过滤器
// 获得目录下的子目录 和 文件 的 File 数组
File [] fes = f.listFiles();
// 过滤 java
fes = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// java
return pathname.getName().endsWith("java");
}
});
// jpg
fes = f.listFiles(path->path.getName().endsWith("jpg"));
for(File fe : fes){
if(fe.isFile()){
System.out.println(fe.getName());
}else if(fe.isDirectory()){
System.out.println("目录;" + fe.getAbsolutePath());
}
}