2.文件 *** 作基础

2.文件 *** 作基础,第1张

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 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;
    }
}

替换前:

替换后:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5574194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存