文件File
程序员文章站
2022-05-27 14:48:40
...
File类:文件相关操作
import java.io.File;
import java.io.IOException;
/**
* IO流:针对的是内存,操作的是文件 输入:从文件输入到向内存-读 输出:从内存输出到文件-写
*
* @author cuijiao
*
*/
public class IOstream {
public static void main(String[] args) throws IOException {
File file = new File("E:\\hello.js");// new的时候只是指存在于内存中的对象,只有当对它操作时才与磁盘文件有关系
if (!file.exists()) {// 判断磁盘中是否存在该文件
file.createNewFile();// 若不存在创建新的文件
}
System.out.println(file.canExecute());// 判断是否可执行
System.out.println(file.canWrite());// 判断是否可写
System.out.println(file.canRead());// 判断是否可读
file.deleteOnExit();// 当程序运行结束,虚拟机终止时删除文件
// file.delete();// 删除文件
System.out.println("删除文件");// 此时执行deleteOnExit文件并未删掉
try {
Thread.sleep(50000);// 让程序停50秒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("程序结束");// 程序结束,文件才被删掉
}
}
File file = new File("E:\\hello.js");// new的时候只是指存在于内存中的对象,只有当对它操作时才与磁盘文件有关系
if (!file.exists()) {// 判断磁盘中是否存在该文件
file.createNewFile();// 若不存在创建新的文件
}
// 路径两个\\是转义,在磁盘中路径实际只有一个\
// 绝对路径:从盘符(C\D\E)往下找
System.out.println(file.getAbsolutePath());// 获取绝对路径
System.out.println(file.getName());// 获取文件名
System.out.println(file.getParent());// 获取目录
// 文件和目录都是file类型
System.out.println(file.isFile());// 判断是否是文件
System.out.println(file.isDirectory());// 判断是否是目录(文件夹)
System.out.println(file.isHidden());// 是否为隐藏文件
文件夹相关操作
public static void main(String[] args) throws IOException {
// 文件夹和文件拥有相同的方法:判断可读、可写、可执行等
File file = new File("E:\\a\\b\\c");
if (!file.exists()) {
file.mkdirs();// 常用
// file.mkdir();// 只创建一个文件夹,若父目录不存在则不自动创建
}
file.delete();// 只能删除最低一层的子文件夹
}
显示文件夹下的所有文件
/**
* 静态方法不能调用非静态方法,因为静态方法是属于对象的
*/
public static void main(String[] args) throws IOException {
// 文件夹和文件拥有相同的方法:判断可读、可写、可执行等
File file = new File("E:\\layui-v2.4.3");
// String[] list = file.list();// 仅能展示直接子目录
// 要显示文件夹下所有子文件夹及文件需要用递归算法
showSubFiles(file);
}
private static void showSubFiles(File file) {
// TODO Auto-generated method stub
File[] files = file.listFiles();
for (File sub : files) {
if (sub.isFile()) {
System.out.println("\t" + sub);// 文件
} else {
if (sub.listFiles().length == 0) {
System.out.println(sub);// 空文件夹
} else {
// System.out.println(sub.getParent() + ":");// 文件夹的直接父目录
showSubFiles(sub);
}
}
找出指定后缀的文件
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
/**
*
* @author cuijiao
*
*/
public class IOstream {
public static void main(String[] args) throws IOException {
File file = new File("E:\\layui-v2.4.3");
new IOstream().getFilesBySuffix(file, ".js");
}
/**
* 找出文件夹中直系子目录中指定后缀的文件
*
* @param dic
* @param suffix
*/
public void getFilesBySuffix(File dic, String suffix) {
if (!dic.isDirectory()) {
System.out.println("不是文件夹");
return;
} else {
File[] files = dic.listFiles(new MyFilter(suffix));// 会过滤掉文件夹,不好
for (File file : files) {
System.out.println(file);
}
}
}
/**
* 私有内部类
*
* @author cuijiao
*
*/
private class MyFilter implements FilenameFilter {
private String suffix;
public MyFilter(String suffix) {
this.suffix = suffix;
}
/**
* name 文件名
*/
@Override
public boolean accept(File dir, String name) {
return name.lastIndexOf(suffix) == name.length() - suffix.length();
}
}
}
若想找出目录中所有(深层次)的指定后缀的文件,还需自己写一套逻辑,不用FilenameFilter 过滤。