Java 中的 File 类常用方法介绍

news2024/9/29 1:31:36

        Java 中的 `File` 类是 java.io 包的一部分,它提供了丰富的文件操作方法。`File` 类可以用来表示文件和目录路径名的抽象表示形式,即它可以用来获取文件或目录的属性,也可以用来创建、删除、重命名文件和目录。下面是一些常用的 `File` 类方法,以及它们的简单示例。


        创建文件对象
在执行任何文件操作之前,需要创建一个 `File` 对象。


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
    }
}


        文件和目录的基本操作
        判断文件或目录是否存在


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        if (file.exists()) {
            System.out.println("文件存在");
        } else {
            System.out.println("文件不存在");
        }
    }
}


        创建新文件


import java.io.File;
import java.io.IOException;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        try {
            if (file.createNewFile()) {
                System.out.println("文件创建成功");
            } else {
                System.out.println("文件已存在");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


        删除文件


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        if (file.delete()) {
            System.out.println("文件删除成功");
        } else {
            System.out.println("文件删除失败");
        }
    }
}


        创建目录


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File directory = new File("exampleDir");
        if (directory.mkdir()) {
            System.out.println("目录创建成功");
        } else {
            System.out.println("目录创建失败");
        }
    }
}


        列出目录内容


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File directory = new File(".");
        String[] files = directory.list();
        for (String file : files) {
            System.out.println(file);
        }
    }
}


        重命名文件或目录


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File oldFile = new File("example.txt");
        File newFile = new File("newExample.txt");
        if (oldFile.renameTo(newFile)) {
            System.out.println("文件重命名成功");
        } else {
            System.out.println("文件重命名失败");
        }
    }
}


        获取文件属性
        获取文件大小


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        if (file.exists() && file.isFile()) {
            System.out.println("文件大小: " + file.length() + " 字节");
        }
    }
}


        判断是文件还是目录


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        if (file.isDirectory()) {
            System.out.println("这是一个目录");
        } else if (file.isFile()) {
            System.out.println("这是一个文件");
        }
    }
}


        获取最后修改时间


import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        long lastModified = file.lastModified();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(new Date(lastModified));
        System.out.println("最后修改时间: " + date);
    }
}


        文件和目录的遍历
        遍历目录及其子目录


import java.io.File;
public class FileExample {
    public static void main(String[] args) {
        File directory = new File(".");
        listFiles(directory, 0);
    }
    public static void listFiles(File dir, int indent) {
        if (dir.isDirectory()) {
            File[] files = dir.listFiles();
            if (files != null) {
                for (File file : files) {
                    for (int i = 0; i < indent; i++) {
                        System.out.print("  ");
                    }
                    System.out.println(file.getName());
                    
                    if (file.isDirectory()) {
                        listFiles(file, indent + 1);
                    }
                }
            }
        }
    }
}


这个递归方法会打印出目录及其所有子目录中的文件和目录名,使用缩进来表示目录的层次结构。
        文件读写操作
`File` 类本身不提供文件内容的读写操作,但它是 `InputStream` 和 `OutputStream` 的基础,这些流类提供了读写文件内容的功能。下面是一些简单的读写文件的例子。
        写入文件


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteExample {
    public static void main(String[] args) {
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"));
            writer.write("Hello, World!");
            writer.newLine();
            writer.write("This is a simple text file example.");
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


        读取文件


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



这些例子展示了如何使用 `BufferedWriter` 和 `BufferedReader` 以及它们的包装器 `FileWriter` 和 `FileReader` 来写入和读取文本文件。
        总结
        Java 的 `File` 类为文件和目录操作提供了丰富的API。通过这些API,开发者可以轻松地创建、删除、重命名文件和目录,获取文件属性,遍历文件系统,以及读写文件内容。这些功能是任何需要文件操作的Java应用程序的基础。虽然现代Java开发中可能会使用更高级的API,如NIO.2(Java New I/O)中的 `Path` 和 `Files` 类,但 `File` 类仍然是一个重要和有用的工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1506598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双体系Java学习之程序流程控制及选择结构

程序流程控制 选择结构 package struct;import java.util.Scanner;public class IfDemo01 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println("请输入内容&#xff1a;");String s scanner.nextLine();//判断字…

elasticsearch篇

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:动态属性设置)

动态设置组件的属性&#xff0c;支持开发者在属性设置时使用if/else语法&#xff0c;且根据需要使用多态样式设置属性。 说明&#xff1a; 从API Version 11开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 attributeModifier attributeMo…

AI Vtuber一款聚合了多种大模型技术的虚拟主播

大家好&#xff0c;笔者荒生&#xff0c;今天调研了一款比较不错的开源项目AI-Vtuber&#xff0c;和大家一起分享。 AI-Vtuber是一款数字人虚拟直播软件&#xff0c;聚合了多种多种市面主流大模型技术&#xff0c;可谓牛得一逼。包括&#xff1a;支持ChatGPT、Claude、ChatGLM…

C语言学习--练习4(二维数组)

目录 1.统计有序数组中的负数 2.矩阵对角线元素和 3.最富有客户的资产总量 4.托普利兹矩阵 5.矩阵中的幸运数 6.二进制矩阵中的特殊位置 7.岛屿的周长 1.统计有序数组中的负数 //直接遍历二维数组即可 int countNegatives(int** grid, int gridSize, int* gridColSize) …

20240310-2-数组(Array)

数组&#xff08;Array&#xff09; 面试中最常见的就是围绕数组进行出题&#xff0c;主要原则数组可以随机读取&#xff0c;一般遇到数组相关的题目&#xff0c;都不是直观看到的那样。第一步暴力解法&#xff0c;第二步是否可以排序&#xff0c;是否可以二分&#xff0c;是否…

【Linux】线程封装_互斥

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;线程封装Thread.cpp &#x1f449;&am…

给 spyter/all-spark-notebook 添加scala支持

spyter/all-spark-notebook默认没有安装scala notebook&#xff0c;需要手动添加。 你可以创建一个新的 Dockerfile&#xff0c;在其中添加你需要的配置和组件。以下是一个简单的例子&#xff1a; FROM jupyter/all-spark-notebook:x86_64-ubuntu-22.04 #冒号后可以是latest&a…

Masked Generative Distillation(MGD)2022年ECCV

Masked Generative Distillation&#xff08;MGD&#xff09;2022年ECCV 摘要 **目前的蒸馏算法通常通过模仿老师的输出来提高学生的表现。本文表明&#xff0c;教师还可以通过引导学生特征恢复来提高学生的代表性。从这个角度来看&#xff0c;我们提出的掩模生成蒸馏&#x…

扩展学习|系统理解数字经济

文献来源&#xff1a;[1]肖静华,胡杨颂,吴瑶.成长品&#xff1a;数据驱动的企业与用户互动创新案例研究[J].管理世界,2020,36(03):183-205.DOI:10.19744/j.cnki.11-1235/f.2020.0041. [2]陈晓红,李杨扬,宋丽洁等.数字经济理论体系与研究展望[J].管理世界,2022,38(02):208-22413…

微信小程序跳转到其他小程序

有两种方式&#xff0c;如下&#xff1a; 一、appid跳转 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//不配的话默认是首页//develop开发版&#xff1b;trial体验版&#xff1b;release正式版envVersion: release, success(res) {// 打开成功…

yudao-cloud 学习笔记

前端代码 浏览器打开 https://cloud.iocoder.cn/intro/ F12 执行代码 var aaa $(".sidebar-group-items").find("a"); var ll[]; var tt[]; for(var i0;i<aaa.length;i ){ ll.push("https://doc.iocoder.cn" $(aaa[i]).attr("href&quo…

电动车窗开关中MOS管的应用解析

随着科技的不断发展&#xff0c;电动车窗系统已经成为现代汽车中不可或缺的一部分。而MOS&#xff08;金属氧化物半导体&#xff09;管的应用&#xff0c;为电动车窗开关注入了新的活力&#xff0c;极大地提高了其使用寿命和安全性。 一、MOS的优越性能 MOS管以其卓越的开关…

记录西门子:IO隔离SCL编程

在PLC变量中创建IO输入输出 在PLC类型中创建输入和输出&#xff0c;并将PLC变量的输入输出名称复制过来 创建一个FC块或者FB块 创建一个DB块 MAIN主程序中&#xff1a;

【JavaEE初阶系列】——计算机是如何工作的

目录 &#x1f388;冯诺依曼体系 ❗外存和内存的概念 ❗CPU中央处理器—人类当今科技领域巅峰之作之一 &#x1f6a9;如何衡量cpu &#x1f6a9;指令&#xff08;Instruction&#xff09; &#x1f388;操作系统&#xff08;Operating System&#xff09; &#x1f388;…

超越基础:提升你的数据采集策略与IP代理的高级应用

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

软件测试 需求

文章目录 1. 需求1.1 什么是需求1.2 为什么要有需求1.3 测试人员眼中的需求1.4 如何深入理解需求 2. 测试用例的概念2.1 什么是测试用例2.2 为什么要有测试用例 3. 软件错误&#xff08;BUG&#xff09;的概念4. 开发模型和测试模型4.1 软件的生命周期4.2 瀑布模型&#xff08;…

[SAP] ABAP注释快捷键修改

在使用ABAP编辑器的时候&#xff0c;原有的添加代码注释和取消代码注释的快捷键未生效&#xff0c;这时我们可以考虑对注释快捷键进行修改 在事务码SE38(ABAP编辑器)屏幕右下角&#xff0c;点击【Options选项】图标 在【键盘】|【命令】输入栏中输入"comment"关键字…

mac上更改vscode快捷键

以移动当前行代码为例 mac上的vscode&#xff0c;默认移动当前行代码的快捷键是⌥↑即option↑按键 现在我想改成command↑ 步骤如下 1.打开vscode-code-首选项-键盘快捷键 2.打开快捷键列表 3.输入move line&#xff0c;找到要改动的这个快捷键 当前行-右键-更改键绑定&…

LTspice(14) Noise仿真

LTspice(14) Noise仿真 好久没有更新LTspice的教程了&#xff0c;大家想了没&#xff1f; 截止目前LTspice已经更新到24.0.9。界面发生了一些变化&#xff0c;但主要功能并不受影响&#xff0c;新的版本改了UI&#xff0c;找东西更加方便了&#xff0c;界面如下图1所示。 图1…