java常用类库(十)——File
作者:互联网
File
来源:java.io.File
文件类,主要是对文件,文件夹的操作。由于不同操作系统不同对应jvm不同,建议使用下面方式使用分隔符,保证跨平台没有问题。
包含常量:
类型 | 字段名 | 描述 | 对应win系统的符号 | 对应unix符号 |
---|---|---|---|---|
static Strig | separator | 名称分隔符 | \ | / |
static String | pathSeparator | 路径分隔符 | ; | : |
常用构造方法:
构造器 | 描述 | 备注 |
---|---|---|
File(File parent, String child) | 从父抽象路径和子路径名创建File实例 | 一般:在parent路径下创建child的文件 |
File(String pathname) | 给定字符串为路径创建File实例 | - |
File(String pathname, String child) | 从父路径字符串和子路径字符串创建新的File实例 | 一般:在pathname路径下创建child的文件 |
常用方法:
关于路径名中的名称分隔符:‘ // ’ (斜杆)or ’ \\ ’ (反斜杠)都可以(系统输出后者)。
区分正反斜杠:正斜杠可以表示除法
返回类型 | 方法名 | 描述 | 备注 |
---|---|---|---|
boolean | createNewFile() | 当且仅当文件不存在时创建空文件 | true:指定文件不存在且成功创建;false:指定文件存在或因操作系统权限不够(读写C盘)抛出异常;解决:用管理员启动IDE或更换盘符 |
boolean | deleteOnExit() | 虚拟机退出时删除文件/目录 | - |
boolean | delete() | 删除文件或文件夹 | 不会移到回收站,删除文件请谨慎 |
boolean | exists() | 测试对象的目录或文件是否存在 | - |
String | getAbsolutePath() | 得到绝对路径 | - |
String | getName() | 获取文件或目录名字 | - |
String | getPath() | 路径转换为字符串 | - |
boolean | isAbsolute() | 是否绝对路径 | - |
boolean | isDirectory() | 是否为目录 | - |
boolean | isFile() | 是否为文件 | - |
boolean | isHidden() | 该文件是否为隐藏文件 | - |
long | length() | 文件长度 | 单位:Byte |
String[ ] | list() | 返回字符串数组,内容为该对象下文件和目录 | 就在当前文件所在层的所有文件和文件夹,不跨层 |
File[ ] | listFiles() | 和上一个方法一样,返回类型为File数组 | - |
File[ ] | listFiles(FileFilter filter) | 返回经过过滤器过滤后的文件和目录 | 过滤器需要实现FileFilter的accept()方法1 |
boolean | mkdir() | 创建指定目录 | - |
boolean | mkdirs() | 创建指定目录 | mkdirs()和mkdir()区别2 |
boolean | renameTo(File dest) | 将文件更名并移到指定位置 | 类似剪切操作 |
关于File类的使用
自己测试方法代码:
(我把注释都去掉了,仅供阅读了解方法)
File f = new File("l://1.txt");
//创建新文件
boolean flag = f.createNewFile();
System.out.println(flag ? "success" : "failed");
System.out.println(f.getAbsolutePath());
//删除需谨慎
f.delete();
File f2= new File("l://hl");
f2.mkdir();
f2.delete();
File f3 = new File("l://hl/hh/hl");
f3.mkdirs();
File f4= new File(f3,"1.txt");
f4.createNewFile();
File f5 = new File("l:\\hl","1.txt");
f5.createNewFile();
//为空才可以删文件夹
f3.delete();
路径分隔符 ; ,推荐这个写法
System.out.println(File.pathSeparator);
//名称分隔符\
System.out.println(File.separator);
//rename
File f6 = new File("l:1.txt");
File f7 = new File("l:1.txt");
//将f6制定的文件移动到f7
f6.renameTo(f7);
关于File过滤器:
package com.hllg.javaBasic.io;
import java.io.File;
import java.io.FileFilter;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class FileFilterBasic {
public static void main(String[] args) {
//指定初始路径
File l = new File("l:\\");
listFiles(l);
}
/**
* 过滤器
*
* @param files
*/
public static void listFiles(File files) {
FileFilter fileFilter = new JpgFilter();
File[] file = files.listFiles(fileFilter);
//下面不做判断,抛出空指针异常
if (file != null && file.length > 0) {
for (File f : file) {
if (f.isDirectory()) {
listFiles(f);
} else {
System.out.println("找到了jpg," + f.getAbsolutePath());
}
}
}
}
/**
* 指定过滤规则,需要实现FileFilter接口
*/
static class JpgFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()) {
//返回true保留
return true;
}
//返回false过滤掉
return false;
}
}
}
上面可以进行优化,使用匿名对象:
package com.hllg.javaBasic.io;
import java.io.File;
import java.io.FileFilter;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class FileFilterAnonymousInsideClass {
public static void main(String[] args) {
//指定初始路径
File l = new File("l:\\");
listFiles(l);
}
/**
* 过滤器
*
* @param files
*/
public static void listFiles(File files) {
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()) {
//返回true保留
return true;
}
//返回false过滤掉
return false;
}
};
File[] file = files.listFiles(fileFilter);
//下面不做判断,抛出空指针异常
if (file != null && file.length > 0) {
for (File f : file) {
if (f.isDirectory()) {
listFiles(f);
} else {
System.out.println("找到了jpg," + f.getAbsolutePath());
}
}
}
}
}
在进行优化,这是常见的方式;
package com.hllg.javaBasic.io;
import java.io.File;
import java.io.FileFilter;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class FileFilterAnonymousInsideClassOptimize {
public static void main(String[] args) {
//指定初始路径
File l = new File("l:\\");
listFiles(l);
}
/**
* 过滤器
*
* @param files
*/
public static void listFiles(File files) {
File[] file = files.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()) {
//返回true保留
return true;
}
//返回false过滤掉
return false;
}
});
//下面不做判断,可能会抛出空指针异常
if (file != null && file.length > 0) {
for (File f : file) {
if (f.isDirectory()) {
listFiles(f);
} else {
System.out.println("找到了jpg," + f.getAbsolutePath());
}
}
}
}
}
遍历文件夹中指定类型文件:
package com.hllg.javaBasic.io;
import java.io.File;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class ForeachDirectory {
public static void main(String[] args) {
//指定初始路径
File f = new File("l:\\");
//获取所有文件存入数组
File[] files = f.listFiles();
listFiles(files);
}
/**
* 遍历文件夹
*
* @param files
*/
public static void listFiles(File[] files) {
//不为空且长度不为0
if (files != null && files.length > 0) {
for (File f : files) {
//判断是文件
if (f.isFile()) {
//指定搜索文件类型
if (f.getName().endsWith(".jpg")) {
//指定文件大小,单位字节,这里是2M
if (f.length() > 2 * 1024 * 1024) {
//打印文件路径
//这里可以加delete(),类似于删除垃圾文件,慎用
//f.delete();
System.out.println(f.getAbsolutePath());
}
}
} else {
//文件夹
File[] directory = f.listFiles();
listFiles(directory);
}
}
}
}
}
差不多就这些,下次见。
sue
2021-2-12 18:54:23
标签:类库,files,java,文件,listFiles,File,new,public 来源: https://blog.csdn.net/shanheye/article/details/113523908