Contents
19.1. 文件筛选过滤¶
HelloWorld.java
package com.a51work.com;
import java.io.File;
import java.io.FilenameFilter;
public class HelloWorld {
public static void main(String[] args) {
File dir = new File("D:\\GitHub");
// 创建txt文件过滤器
Filter filter = new Filter("txt");
System.out.println("txt文件搜索目录为:"+ dir);
String files[] = dir.list(filter); //dir.list();
// 遍历文件列表
for (String fileName:files) {
// 为搜索目录下的文件或目录创建File对象
File f = new File(dir, fileName);
// 如果该f对象是文件,则打印文件名
if (f.isFile()){
System.out.println("文件名:"+ f.getName());
System.out.println("文件绝对路径:" + f.getAbsolutePath());
System.out.println("文件路径: " + f.getPath());
}else{
System.out.println("子目录:" + f);
}
// 测试文件是否存在
if (f.exists()){
System.out.println(f.getName() + "文件存在!");
}else {
System.out.println(f.getName() + "文件不存在");
}
// 测试文件是否可以读取
if (f.canRead()){
System.out.println(f.getName() + "文件可以读取..");
}else {
System.out.println(f.getName() + "文件无法读取..");
}
// 测试文件是否可以写入
if (f.canWrite()){
System.out.println(f.getName() + "文件可以写入..");
}else {
System.out.println(f.getName() + "文件无法写入..");
}
}
}
}
/**
* 自定义基于文件扩展名的文件过滤器
* Filter继承FilenameFilter接口
* boolean accept(File dir, String name):测试指定dir目录中是否包含文件名为name的文件
*/
class Filter implements FilenameFilter {
// 文件扩展名
String extent;
// 构造函数,一个参数,参数名为扩展名
public Filter(String extent) {
this.extent = extent;
}
/**
* @param dir 指定dir目录
* @param name 包含文件名为name的文件
* @return True or False
*/
@Override
public boolean accept(File dir, String name) {
// 测试文件扩展名是否为extenet所指定的
return name.endsWith("." + extent);
}
}
/*
txt文件搜索目录为:D:\GitHub
文件名:hujianli.txt
文件绝对路径:D:\GitHub\hujianli.txt
文件路径: D:\GitHub\hujianli.txt
hujianli.txt文件存在!
hujianli.txt文件可以读取..
hujianli.txt文件可以写入..
文件名:hujianli1.txt
文件绝对路径:D:\GitHub\hujianli1.txt
文件路径: D:\GitHub\hujianli1.txt
hujianli1.txt文件存在!
hujianli1.txt文件可以读取..
hujianli1.txt文件可以写入..
* */
package IO_test01;
import java.io.File;
import java.io.IOException;
public class main {
public static void main(String[] args) throws IOException {
File f = new File("..");
System.out.println(f.getPath());
//返回绝对路径
System.out.println(f.getAbsolutePath());
//返回的是规范路径
System.out.println(f.getCanonicalPath());
File f1 = new File("C:\\Windows");
File f2 = new File("C:\\Windows\\notepad.exe");
File f3 = new File("C:\\Windows\\nothing");
System.out.println(f1.isFile());
System.out.println(f1.isDirectory());
System.out.println(f2.isFile());
System.out.println(f2.isDirectory());
System.out.println(f3.isFile());
System.out.println(f3.isDirectory());
if (f1.isDirectory()) {
if (f1.canRead()) {
System.out.println("f2 is dir and can read...");
}else {
System.out.println("f2 is dir can't read ....");
}
if (f1.canWrite()) {
System.out.println("f2 is dir and can write...");
}else {
System.out.println("f2 is dir can't write ....");
}
if (f1.canExecute()) {
System.out.println("f2 is dir and can exe...");
}else {
System.out.println("f2 is dir can't exe ....");
}
}
}
}