第15 章 : 文件操作
67 File类基本操作
文件操作系统操作类:
java.io.File
文件创建,删除,重命名
File类基本使用
File 实现了Comparable接口
// 构造方法
public File(String pathname)
public File(String parent, String child)
// 创建文件
public boolean createNewFile() throws IOException
// 文件存在
public boolean exists()
// 删除文件
public boolean delete()
示例:
import java.io.File;
import java.io.IOException;
class Demo {
public static void main(String[] args) throws IOException {
File file = new File("./demo.txt");
if(file.exists()){
boolean ret = file.delete();
System.out.println("删除结果:" + ret);
} else{
boolean ret = file.createNewFile();
System.out.println("创建结果:" + ret);
}
}
}
68 File类操作深入
1、路径分隔符
Windows分隔符 "\"
Linux分隔符 "/"
路径分隔符常量 File.separator
2、文件操作流程
程序 -> JVM -> 操作系统函数 -> 文件处理
重复删除或创建的时候会有延时情况,
建议:文件名不要重名
3、创建文件的时候父级目录必须存在
// 获取父路径
public File getParentFile()
// 创建目录
public boolean mkdirs()
示例
import java.io.File;
import java.io.IOException;
class Demo {
public static void main(String[] args) throws IOException {
File file = new File("./dir/demo/demo.txt");
File parentFile = file.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
file.createNewFile();
}
}
69 获取文件信息
涉及文件本身操作,不涉及文件内容处理
// 是否可读
public boolean canRead()
// 是否可写
public boolean canWrite()
// 是否可执行
public boolean canExecute()
// 是否为文件
public boolean isFile()
// 是否为目录
public boolean isDirectory()
// 获取文件长度 字节
public long length()
// 最后修改时间 13位时间戳
public long lastModified()
// 列出目录内容
public File[] listFiles()
示例
import java.io.File;
class Demo {
public static void main(String[] args) {
File file = new File("./dir/demo");
System.out.println(file.canRead()); // true
System.out.println(file.canWrite()); // true
System.out.println(file.canExecute()); // false
System.out.println(file.isFile()); // true
System.out.println(file.isDirectory()); // false
System.out.println(file.length()); // 135 字节
System.out.println(file.lastModified()); // 1574952161000
File[] list = file.listFiles();
for (File f : list) {
System.out.println(f);
}
// ./dir/demo/demo.txt
}
}
70 综合案例:列出目录结构
import java.io.File;
class Demo {
public static void main(String[] args) {
File file = new File("./dir");
listDir(file);
}
public static void listDir(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
if(files != null){
for(File f: files){
listDir(f);
}
}
} else{
System.out.println(file);
}
}
}
71 综合案例:文件批量更名
import java.io.File;
class Demo {
public static void main(String[] args) {
long start = System.currentTimeMillis();
File file = new File("./dir");
renameDir(file);
long end = System.currentTimeMillis();
System.out.println("花费时间:" + (end - start));
}
public static void renameDir(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
if(files != null){
for(File f: files){
renameDir(f);
}
}
} else{
if (file.getName().contains(".")){
int endPos = file.getName().lastIndexOf(".");
String name = file.getName().substring(0, endPos);
File newFile = new File(file.getParent(), name + ".txt");
System.out.println(file.getName());
System.out.println(newFile);
file.renameTo(newFile);
}
}
}
}