1、文件操作类java.io.File
2、File类是Comparable接口的子类,所以File类对象可以进行排序处理。
构造方法:
设置操作路径:public File(String pathname)
设置父路径与子目录:public File(File parent, String child)
对文件进行基本操作的方法:
判断文件是否存在:public boolean exists()
创建新文件:public boolean createNewFile() throws IOException(方法本身若文件存在则不创建返回false)
删除文件:public boolean delete()
3、程序处理过程:程序→JVM→操作系统函数→文件处理
所以在文件重复删除或创建时可能会出现有延迟的问题,所以最好别重名
4、在进行文件创建的时候其父路径必须存在
获取父路径:public File getParentFile();
创建多级目录:public boolean mkdirs();
在程序中判断并且建立父目录的操作在很多情况下只需要一次,如果多次判断执行会使程序的时间复杂度增大,所以想要提升性能,要预先保证父路径的存在。
上述内容代码示例:
import java.io.File;
public class FileDemo {
public static void main(String[] args) throws Exception {
//不同系统环境下路径分隔符不同,separator是File类提供的一个常量
File file = new File("d:" + File.separator + "FileDemo.txt") ;
if(!file.getParentFile().exists()) { //父路径不存在
file.getParentFile().mkdirs(); //创建父路径
}
if(file.exists()) { //文件存在
file.delete() ; //删除文件
}else {
file.createNewFile() ; //创建新文件
}
}
}
5、获取文件信息:
判断文件是否可读:file.canRead(); 可写 file.canWrite();
获取文件长度:public long length();返回的是字节长度→四舍五入
最后一次修改时间:public long lastModified();返回long型→转日期型
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified()))
判断是否是目录:public boolean isDirectory();
判断是否是文件:public boolean isFile();
列出目录内容:public File[] listFiles();
6、代码示例:列出指定目录中的全部文件
import java.io.File;
public class FileDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator) ;
listDir(file) ;
}
public static void listDir(File file) {
if(file.isDirectory()) {
File results [] = file.listFiles() ; //列出文件中的全部内容
if(results != null) {
for(int x = 0 ; x < results.length ; x ++) {
listDir(results[x]) ; //继续依次判断
}
}
}
System.out.println(file) ; //获得完整路径
//file.delete(); 删除所有文件
}
}
7、File操作案例:批量修改文件名称
package com.demo;
import java.io.File;
public class FileDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator + "JavaDemo" + File.separator + "Demo") ;
long start = System.currentTimeMillis();
renameDir(file) ;
long end = System.currentTimeMillis() ;
System.out.println("本次操作所花费的时间:" + (end-start));
}
public static void renameDir(File file) {
if(file.isDirectory()) { //是文件
File results [] = file.listFiles() ; //获取文件中的全部内容
if(results != null) {
for(int x = 0 ; x < results.length ; x ++) {
renameDir(results[x]) ;
}
}
}else { //不是目录是文件
if(file.isFile()) {
String fileName = null ;
if(file.getName().contains(".")) {
fileName = file.getName().substring(0, file.getName().lastIndexOf(".")) + ".java"; //截取最后一个点之前的文件名,再连接“.txt”后缀
}else {
fileName = file.getName() + ".java";
}
File newFile = new File(file.getParentFile(),fileName) ; // 给定父抽象路径名和子路径名字符串创建一个新的File实例
file.renameTo(newFile) ; //重命名
System.out.println(fileName) ; //文件名
}
}
}
}