文件操作和IO(2):Java中操作文件

目录

一、File的属性

二、File的构造方法

三、File的方法

四、代码示例

1、getName,getParent,getPath方法

2、getAbsolutePath,getCanonicalPath方法

3、exists,isDirectory,createNewFile方法

4、createNewFile,delete,deleteOnExit

5、list,listFiles,mkdir,mkdirs,renameTo方法


        本章内容,主要涉及文件的元信息、路径的操作,并不存在对文件的读写操作。

        Java通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意:有File对象并不意味着真实存在该文件。

以下是对File的概述:

一、File的属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符,String
类型的表示
static charpathSeparatorChar依赖于系统的路径分隔符,char类

这里路径直接的分隔符是根据系统自动调整的,在开发过程中还是更推荐使用正斜杠 “ / ”。windows也支持正斜杠。


二、File的构造方法

签名说明
File(File parent, String child)根据父目录 + 孩子文件路径,创建⼀个新的 File 实例
File(String pathname)根据文件路径创建⼀个新的 File 实例,路径可以是绝
对路径或者相对路径
File(String parent, String child)根据父目录 + 孩子文件路径,创建⼀个新的 File 实
例,父目录用路径表示

这里主要介绍中间的构造方法,中间的是最常用的。注意:这里的决定路径有两种情况:

        1、如果是在idea中运行程序,此时工作目录就是在项目所在的目录。

        2、如果把代码打包成一个jar包,此时工作目录就是在jar包所在目录。


三、File的方法

修饰符及返回值类型方法签名说明
StringgetParent()返回 File 对象的⽗⽬录⽂件路径
StringgetName()返回 FIle 对象的纯⽂件名称
StringgetPath()返回 File 对象的⽂件路径
StringgetAbsolutePath()返回File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的⽂件是否真实
存在
boolean                         isDirectory()                  判断 File 对象代表的⽂件是否是⼀个⽬录
booleanisFile()判断 File 对象代表的⽂件是否是⼀
个普通⽂件
booleancreateNewFile()根据 File对象,⾃动创建⼀个空⽂
件。成功创建后返回 true
booleandelete()根据 File 对象,删除该⽂件。成功
删除后返回 true 
voiddeleteOnExit()根据 File 对象,标注⽂件将被删
除,删除动作会到 JVM 运⾏结束时
才会进⾏
String[]list()返回 File 对象代表的⽬录下的所有
⽂件名
File[]listFiles()返回 File 对象代表的⽬录下的所有
⽂件,以 File 对象表⽰
booleanmkdir()创建 File 对象代表的⽬录
booleanmkdirs()创建 File 对象代表的⽬录,如果必
要,会创建中间⽬录
booleanrenameTo(File dest)进⾏⽂件改名,也可以视为我们平
时的剪切、粘贴操作
booleancanRead()判断⽤⼾是否对⽂件有可读权
booleancanWrite()判断⽤⼾是否对⽂件有可写权限

四、代码示例

1、getName,getParent,getPath方法

绝对路径的File对象,代码如下

public class IODemo1 {
    public static void main(String[] args) {
        //指定文件的路径
        File f1 = new File("C:/IOTest/test.txt");//绝对路径
        System.out.println(f1.getPath());//返回File对象的⽂件路径
        System.out.println(f1.getParent());//返回 File 对象的⽗⽬录⽂件路径
        System.out.println(f1.getName());//返回 FIle 对象的纯⽂件名称
    }
}

执行结果:

相对路径的File对象,代码如下

public class IODemo1 {
    public static void main(String[] args) {
        //指定文件的路径
        File f1 = new File("./test.txt");//绝对路径
        System.out.println(f1.getPath());//返回File对象的⽂件路径
        System.out.println(f1.getParent());//返回 File 对象的⽗⽬录⽂件路径
        System.out.println(f1.getName());//返回 FIle 对象的纯⽂件名称
    }
}

执行结果:

2、getAbsolutePath,getCanonicalPath方法

使用绝对路径创造一个File对象,代码如下

public class IODemo2 {
    public static void main(String[] args) throws IOException {
        File f = new File("C:/IOTest/test.txt");//绝对路径
        System.out.println(f.getAbsolutePath());//返回File对象的绝对路径
        System.out.println(f.getCanonicalPath());//返回File对象的修饰过的绝对路径
    }
}

执行结果:

使用相对路径创建File对象,代码如下:

public class IODemo2 {
    public static void main(String[] args) throws IOException {
        File f = new File("./test.txt");//绝对路径
        System.out.println(f.getAbsolutePath());//返回File对象的绝对路径
        System.out.println(f.getCanonicalPath());//返回File对象的修饰过的绝对路径
    }
}

执行结果:

可以看出,上面方法在绝对路径中没有啥差别,但在相对路径的就有些许差别。getCanonicalPath返回File对象的修饰过的绝对路径,也就没有了点 ' . ' 修饰。

3、exists,isDirectory,createNewFile方法

使用相对路径创建File对象,代码如下:

public class IODemo3 {
    public static void main(String[] args) {
        File f = new File("./test.txt");
        boolean ret1 = f.exists();//判断 File 对象描述的⽂件是否真实存在
        boolean ret2 = f.isDirectory();//判断 File 对象代表的⽂件是否是⼀个⽬录
        boolean ret3 = f.isFile();//判断 File 对象代表的⽂件是否是⼀个普通⽂件
        System.out.println(ret1);
        System.out.println(ret2);
        System.out.println(ret3);
    }
}

执行结果:

4、createNewFile,delete,deleteOnExit

先创造出一个文件,使用createNewFile方法,代码如下:

public class IODemo4 {
    public static void main(String[] args) throws IOException {
        File f = new File("./test.txt");
        boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 true
        System.out.println(ret1);
    }
}

执行代码前:

执行代码后:

多了test.txt文件

delete方法删除test.txt文件,代码如下:

public class IODemo4 {
    public static void main(String[] args) throws IOException {
        File f = new File("./test.txt");
        boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 true
        System.out.println(ret1);
        boolean ret = f.delete();//根据 File 对象,删除该⽂件。成功删除后返回 true 
        System.out.println(ret);
    }
}

执行结果:

test.txt文件没有了。

deleteOnExit方法,在程序执行完后才会删除指定的文件,代码如下:

public class IODemo4 {
    public static void main(String[] args) throws IOException, InterruptedException {
        File f = new File("./test.txt");
        boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 true
        System.out.println(ret1);//根据 File 对象,标注⽂件将被删除,删除动作会到 JVM 运⾏结束时才会进⾏
        f.deleteOnExit();
        Thread.sleep(5000);
    }
}

执行前:

有test.txt文件。

执行后:

过5秒后才会删除test.txt文件。

5、list,listFiles,mkdir,mkdirs,renameTo方法

list:

代码如下:

public class IODemo5 {
    public static void main(String[] args) {
        File f = new File(".");
        String[] files = f.list();//返回 File 对象代表的⽬录下的所有⽂件名
        System.out.println(Arrays.toString(files));
    }
}

执行结果:

listFiles:

代码如下:

public class IODemo5 {
    public static void main(String[] args) {
//        String[] files = f.list();//返回 File 对象代表的⽬录下的所有⽂件名
//        System.out.println(Arrays.toString(files));
        File f = new File(".");
        File[] files = f.listFiles();//返回File对象代表的⽬录下的所有⽂件,以File对象表⽰
        System.out.println(Arrays.toString(files));
    }
}

执行结果:

mkdir:

代码如下:

public class IODemo6 {
    public static void main(String[] args) {
        File f = new File("./aaa");//创建 File 对象代表的⽬录
        boolean ret1 = f.mkdir();
        System.out.println(ret1);
    }
}

执行前:

执行后:

多出了aaa目录。

mkdirs:

代码如下:

public class IODemo7 {
    public static void main(String[] args) {
        File f = new File("./aaa/bbb/ccc");//创建 File 对象代表的⽬录,如果必 要,会创建中间⽬录
        boolean ret = f.mkdirs();
        System.out.println(ret);
    }
}

执行前:

执行后:

当前目录下多了aaa/bbb/ccc。

renameTo:

代码如下:

public class IODemo8 {
    public static void main(String[] args) {
        File src = new File("./test2.txt");
        File dest = new File("./test.txt");
        src.renameTo(dest);//进⾏⽂件改名,也可以视为我们平时的剪切、粘贴操作
    }
}

执行前:

文件名是test.txt。

执行后:

文件名是test2.txt。

除重命名功能外,renameTo还有移动功能(移动比复制、粘贴效率高,前提是在同一硬盘上)。


都看到这了,点个赞再走吧,谢谢谢谢谢

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【04】C语言括号匹配问题

欢迎来到土土的博客~🥳🥳🌹🌹🌹 💥个人主页:大耳朵土土垚的博客 💥 所属专栏:C语言系列函数实现 题目描述: 给定一个只包括 ‘(’,‘)’&#xf…

金融业被网络攻击了怎么办,如何治理和风险控制?

近年来,网络罪犯的人数和复杂程度都在增加,网络罪犯的目标锁定变得更具策略性,更加专注于最大效率和获利。随着有关全球网络犯罪的数据持续涌入,可以看出金融服务企业已然成为头号锁定目标。虽然金融服务企业在网络安全人员、工具…

python 基础知识点(蓝桥杯python科目个人复习计划57)

今日复习计划:做题 例题1:笨笨的机器人 问题描述: 肖恩有一个机器人,他能根据输入的指令移动相应的距离。但是这个机器人很笨,他永远分不清往左边还是往右边移动。肖恩也知道这一点,所以他设定这个机器人…

实现数组方法 forEach map filter every

手写forEach Array.prototype.myforEach function (fn, thisValue) {let index 0;let arr thisValue || this;if (typeof fn ! function) {throw new TypeError(fn is not a function)}while (index < arr.length) {if (index in arr) {fn.call (thisValue, arr[index],…

AI入门笔记(三)

神经网络是如何工作的 神经网络又是如何工作的呢&#xff1f;我们用一个例子来解释。我们看下面这张图片&#xff0c;我们要识别出这些图片都是0并不难&#xff0c;要怎么交给计算机&#xff0c;让计算机和我们得出同样的结果&#xff1f;难点就在于模式识别的答案不标准&…

Mybatis_plus-逻辑删除、通用枚举、自动填充、插件等

一、逻辑删除 曾经我们写的删除代码都是物理删除。 逻辑删除&#xff1a;删除转变为更新 ​ update user set deleted1 where id 1 and deleted0 查找: 追加 where 条件过滤掉已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段 ​ 查找: select id,nam…

【NR 定位】3GPP NR Positioning 5G定位标准解读(五)

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

扑克牌翻牌记忆小游戏源码

源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 效果预览 下载地址 https://www.qqmu.com/2296.html

Spring学习笔记(七)SpringMVC入门

一.什么是Spring MVC 1.什么是MVC&#xff08;一种思想模式&#xff09; M:模型 V:视图 C:控制器 2、Java EE三层架构 在Java EE开发中&#xff0c;系统经典的三层架构包括表现层、业务层和持久层。 表现层&#xff08;Web层&#xff09;负责接收客户端请求&#xff0c;并…

Linux基本指令(下)

目录 1. less指令 2. head与tail指令 3. find指令 示例 4. grep指令 示例 ​编辑 5. zip/unzip 打包与压缩 示例 ​编辑 6. tar指令 7. find指令&#xff1a; -name 8. echo指令 9. 时间相关的指令 1.在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff…

更详细的软件测试理论基础:流程,开发、测试模型,测试分类,测试用例及其设计方法,缺陷

文章目录 一、测试流程二、开发模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、测试模型1、V模型2、W模型 四、测试分类五、测试用例 test case六、测试用例设计方法1、等价类划分法2、边界值分析法3、因果图法4、判定表法5、正交法6、场景法7、流程分析法8、错误推测法方…

OpenAI回击马斯克的起诉:GPT-4不是AGI,所以没必要开源

前情提要 上一集我们讲到&#xff0c;马斯克起诉了OpenAI&#xff0c;扬言其背叛了公司成立时达成的一项协议&#xff0c;即开发技术的目的是“造福人类”而非利润。 “OpenAI已经变成了微软的一个闭源形态的实际子公司。在其新的董事会领导下&#xff0c;公司不仅在开发&…

FreeCad 有限元分析入门

2024.3 最新版本 0.21.2 FreeCad 有限元分析入门 基本步骤&#xff1a; 一、零件制作 1、创建立方体 2、修改参数 二、建立力学分析 1、为零件附着材料 2、增加固定约束 3、增加均布在表面的受力 4、零件网格化 …

Decoupled Knowledge Distillation解耦知识蒸馏

Decoupled Knowledge Distillation解耦知识蒸馏 现有的蒸馏方法主要是基于从中间层提取深层特征&#xff0c;而忽略了Logit蒸馏的重要性。为了给logit蒸馏研究提供一个新的视角&#xff0c;我们将经典的KD损失重新表述为两部分&#xff0c;即目标类知识蒸馏&#xff08;TCKD&a…

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 2

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&#…

第八节 龙晰Anolis 8.8 安装 DDE 桌面环境

一、前言 最小化安装的龙晰 Anolis OS 8.8 是不带图形化界面的&#xff0c;只能使用命令行&#xff0c;有些时候需要用到桌面环境&#xff0c;而DDE (Deepin Desktop Enviroment) 就是很好的桌面环境&#xff0c;它是指龙晰 Anolis 所搭载的中国自主桌面环境&#xff0c;用起来…

常数项级数

定义 级数的形式如下&#xff1a; ∑ n 1 ∞ u n u 1 u 2 u 3 . . . u n . . . \sum_{n1}^{\infin}u_n u_1u_2u_3...u_n... n1∑∞​un​u1​u2​u3​...un​... 这个数列的项数是无穷多个&#xff0c;如果取其前n项 S n u 1 u 2 . . . u n S_n u_1u_2...u_n Sn…

Java集合相关面试题(2024大厂高频面试题系列)

1、说一说Java提供的常见集合&#xff1f;&#xff08;画一下集合结构图&#xff09; 在java中提供了量大类的集合框架&#xff0c;主要分为两类&#xff1a; 第一个是Collection 属于单列集合&#xff0c;第二个是Map 属于双列集合 在Collection中有两个子接口List和Set。…

C#中多语言编程原理及实例解析

文章目录 一、了解C#多语言编程原理1. 通用语言运行库&#xff08;CLR&#xff09;2. 通用类型系统&#xff08;CTS&#xff09;3. 微软中间语言&#xff08;MSIL&#xff09;4. 元数据和反射5. 公共语言规范&#xff08;CLS&#xff09; 二、实例说明 一、了解C#多语言编程原理…

sql基本语法+实验实践

sql语法 注释&#xff1a; 单行 --注释内容# 注释内容多行 /* 注释内容 */数据定义语言DDL 查询所有数据库 show databases;注意是databases而不是database。 查询当前数据库 select database();创建数据库 create database [if not exists] 数据库名 [default charset 字符…