2.文件操作基础

在操作系统中,文件使数据的存储单位,每个文件都有着不同的属性。
在代码中,如何获取文件的各种属性呢? 下面的学习将让我们掌握这个技能

1.File类的使用

在java编程中,我们可以使用File类来进行文件属性获取

代码实例如下:

public static void main(String[] args) {
    
    
    File file=new File("Flag_Feedback.png");
    System.out.println("获得文件名称:"+file.getName());
    System.out.println("获得文件长度(大小):"+file.length()+"byte");
    //获得文件相对路径
    String filePath=file.getPath();
    System.out.println(filePath);
    //获得文件绝对路径
    System.out.println(file.getAbsolutePath());
    //获得文件的URI路径
    System.out.println(file.toURI());
    //获得文件最后修改日期
    System.out.println(new Date(file.lastModified()));
    //获得文件是否可读
    System.out.println(file.canRead());
    //获得文件是否可写
    System.out.println(file.canWrite());
    //获取文件是否可执行
    System.out.println(file.canExecute());
    //获取文件是否隐藏
    System.out.println(file.isHidden());
}

上面的代码中,只要我们在new File()时给的是正确的文件路径,那么我们就可以通过new的FIle对象获取该文件的各种属性。
在这里插入图片描述

注意:File对象的创建有几种方式
在这里插入图片描述

2.查询指定类型的文件

import javax.swing.table.DefaultTableModel;
import java.io.File;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
public class CoreCoding {
    
    
    public static void main(String[] args) {
    
    
        Object[] result=listFiles(new File("D:\\MyReposity\\Study\\study\\Java动手做一做"),"png");
        for (Object file:result){
    
    
            File file1=(File)file;
            System.out.println(file1.getName());
        }
    }

    public static boolean accept(File pathname,String extName) {
    
    
        // 获取用户设置的指定扩展名
        if (extName == null || extName.isEmpty())
            return false;
        if (!extName.startsWith("."))// 判断扩展名前缀
            extName = "." + extName;// 完事扩展名前缀
        extName = extName.toLowerCase();
        // 判断扩展名与过滤文件名是否符合要求
        if (pathname.getName().toLowerCase().endsWith(extName))
            return true;
        return false;
    }
    /**
     * 显示文件夹中的文件
     */
    private static Object[] listFiles(File dir,String extName) {
    
    
        List<File> fileList=new ArrayList<>();
        if (dir == null)
            return null;
        if(!dir.isDirectory()){
    
    
            return null;
        }
        //获取目录下所有的文件的数组
        File[] files = dir.listFiles();
        //遍历文件数组
        for (File file : files) {
    
    
            if(accept(file,extName)){
    
    
                fileList.add(file);
            }
        }
        return fileList.toArray();
    }
}

在这里插入图片描述

3.文本内容替换功能

package FileCoding.Exa414;

import java.io.*;

/**
 * 文件部分内容替换
 */
public class CoreCoding {
    
    
    public static void main(String[] args) {
    
    
        replaceText(new File("Text.txt"),"nima","tama");
    }

    public static boolean replaceText(File file, String searchText, String replaceText){
    
    
        if (searchText.isEmpty())
            return false;
        try {
    
    
            FileReader fis = new FileReader(file);// 创建文件输入流
            char[] data = new char[1024];// 创建缓冲字符数组
            int rn = 0;
            StringBuilder sb = new StringBuilder();// 创建字符串构建器
            while ((rn = fis.read(data)) > 0) {
    
    // 读取文件内容到字符串构建器
                String str = String.valueOf(data, 0, rn);
                sb.append(str);
            }
            fis.close();// 关闭输入流
            // 从构建器中生成字符串,并替换搜索文本
            String str = sb.toString().replace(searchText, replaceText);
            FileWriter fOut = new FileWriter(file);// 创建文件输出流
            fOut.write(str.toCharArray());// 把替换完成的字符串写入文件内
            fOut.close();// 关闭输出流
        } catch (FileNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        return true;
    }
}

替换前:
在这里插入图片描述

替换后:
在这里插入图片描述

Guess you like

Origin blog.csdn.net/c1776167012/article/details/121456621