文件操作

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) ; //文件名
            }
        }
        
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值