文件操作与IO(2)

news2025/1/13 9:27:16

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

File概述

我们先来看看File类中的常见属性,构造方法和方法.

属性

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

构造方法

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

其中,在File(String pathname)中:

这个路径也可以是不存在的路径.

构造一个File对象,需指定路径,此处路径可以是相对的也可以是绝对的.

如果写作绝对路径: (1)如直接在idea中 运行程序.此时工作目录就是项目所在目录.

(2)如果是把代码打包成一个单独的jar包来执行,此时工作目录就是jar包所在目录.

 方法

修饰符及返回值的类型方法签名说明
StringgetParent()返回File对象的父目录文件路径
StringgetName()返回File对象的纯文件名称
StringgetPath()返回File对象的文件路径
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象的修饰过的绝对路径
booleanexists()判断File对象描述的文件是否真实存在
booleanisDirectory()判断File对象代表的文件是否是一个目录
booleanisFile()判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()根据File对象,自动创建一个空文件.成功创建后返回true.
booleandelete()根据File对象,删除该文件.成功删除后返回true.
voiddeleteOnExit()

根据File对象,标注文件将被删除,

删除动作会到JVM运行结束后才会运行

String[]list()返回File对象代表下目录的所有文件名
File[]listFiles()返回File对象代表的目录下的所有文件,以File对象表示
booleanmkdir()创建File对象代表的目录
booleanmkdirs()创建File对象代表的目录,如果必要,会创建中间目录
boolean

renameTo(File dest)

进行文件改名,也可视为我们平时的剪切,粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

代码示例

示例1:观察get系列的观点与差异:

import java.io.File;
import java.io.IOException;

public class FileTest1 {
    public static void main(String[] args) throws IOException {
        File file = new File("C:/code/gitee秘密通道/Java所有代码/test _1_20/test.txt");

        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

运行结果:

 

注意:

 ​

 如果构造File对象使用绝对路径,最后三个方法的操作结果确实没区别.但如果这样的话:

import java.io.File;
import java.io.IOException;

public class FileTest1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");

        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

得出结果:

 

这时就有了明显的区别:

1.getPath()的结果就是File构造方法中的参数.

2. getAbsolutePath()中,此处是先一层一层找到system_code这一级目录,然后再找 . ,此时 . 就相当于原地踏步了一下

示例二

普通文件的创建

import java.io.File;
import java.io.IOException;

public class FileTest2 {
    public static void main(String[] args) throws IOException {
        File file = new File("hello-world.txt"); //要求该文件不存在
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
    }
}

运行结果:

 

同时,也在旁边创建出了这个文件:

 

示例三:

普通文件的删除

import java.io.File;
import java.io.IOException;

public class FileTest3 {
    public static void main(String[] args) throws IOException {
        File file = new File("some-file.txt");
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.delete());
        System.out.println(file.exists());
    }
}

运行结果:

 

示例4

观察deleteOnExit的现象

退出之后再删除,这样的文件,也称为"临时文件"->很有用有一些程序有这个.

作用:给你实时编辑的内容进行保存.防止文件没保存,机器突然pia~一下断电的情况 

 

import java.io.File;
import java.io.IOException;

import static java.lang.Thread.sleep;

public class FileTest4 {
    public static void main(String[] args) throws IOException, InterruptedException {
        File file = new File("some-file.txt"); //要求该文件不存在,才能看到
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        sleep(5000);
        file.deleteOnExit();

        System.out.println(file.exists());
    }
}

结果:

 

程序运行结束后,文件还是被删除了.

示例5

观察目录的创建

 

import java.io.File;

public class FileTest5 {
    public static void main(String[] args) {
        File dir = new File("some-dir"); //要求该目录不存在,才能看到相同的现象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:

 

同时,亦创建了一个新目录:

 

示例6

观察目录创建2

import java.io.File;

public class FileTest6 {
    public static void main(String[] args) {
        File dir = new File("some-parent\\some-dir");
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdirs());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:

 

同时:亦创建了一个新目录:

 

注意:如果使用mkdir(),如果中间目录不存在(这里就是some-parent不存在),则无法创建成功;

mkdirs()可以解决这个问题. 

 示例7

观察文件重命名:

import java.io.File;

public class FileTest7 {
    public static void main(String[] args) {
        File file = new File("hello-world.txt"); //这个要存在
        File dest = new File("dest.txt"); //要求这个不存在
        System.out.println(file.exists());
        System.out.println(dest.exists());
        System.out.println(file.renameTo(dest));
        System.out.println(file.exists());
        System.out.println(dest.exists());
    }
}

运行结果:

 

 

 

 

 

 

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

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

相关文章

【51单片机】

0、前言 参考&#xff1a;普中 51 单片机开发攻略 第14章 1、硬件 ULN2003 芯片 2、软件 mian.c #include <reg52.h> #include <intrins.h> #include "delayms.h"typedef unsigned char u8; typedef unsigned int u16;sbit DC_MotorP1^0;void DC_Mo…

使用STM32的UART实现蓝牙通信

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;&#x1f447…

基于Unity平台开发Vision Pro应用

VisionOS是苹果最新空间计算设备Vision Pro的操作系统。Unity开发人员可以利用现有的3D场景 以及为 visionOS 构建游戏或应用程序的资产。有关 visionOS 的更多信息&#xff0c;请参阅 Apple 的 visionOS 概述。 visionOS提供了几种不同的显示应用程序的模式&#xff1a;Windo…

线性代数:逆、转置、分块、多项式 矩阵公式总结

目录 逆矩阵、转置矩阵重要公式 公式 证明 矩阵分块 基本运算 分块的逆&#xff08;主副对角线分块对角阵的逆、主副对角线上下三角分块对角阵的逆&#xff09; 例 矩阵多项式 例 克拉默法则及逆矩阵求方程组 逆矩阵、转置矩阵重要公式 公式 证明 矩阵分块 基本运…

【嵌入式移植】4、U-Boot源码分析1—Makefile

U-Boot源码分析1—Makefile 1 分析思路2 u-boot源码目录结构3 Makefile源码3.1 版本号3.2 环境变量3.3 Beautify output3.4 输出文件的目录设置、PHONY目标3.6 目录信息3.5 Source Code Checker3.7 设置单独编译模块、PHONY目标3.8 获取宿主机的架构和系统3.9 设置交叉编译工具…

课题学习(十九)----Allan方差:陀螺仪噪声分析

一、介绍 Allan方差是一种分析时域数据序列的方法&#xff0c;用于测量振荡器的频率稳定性。该方法还可用于确定系统中作为平均时间函数的本征噪声。该方法易于计算和理解&#xff0c;是目前最流行的识别和量化惯性传感器数据中存在的不同噪声项的方法之一。该方法的结果与适用…

若依管理系统搭建教程,ruoyi-vue环境搭建

环境部署 准备工作 JDK > 1.8 (推荐1.8版本) Mysql > 5.7.0 (推荐5.7版本) Maven > 3.0 运行系统 1、前往Gitee下载页面([https://gitee.com/y_project/RuoYi (opens new window)](https://gitee.com/y_project/RuoYi))下载解压到工作目录 2、导入到Eclipse&#…

JavaScript之ES6新特性02

模板字符串 模板字符串&#xff08;template string&#xff09;是增强版的字符串&#xff0c;用反引号&#xff08;&#xff09;标识。它可以当作普通字符串使用&#xff0c;也可以用来定义多行字符串&#xff0c;或者在字符串中嵌入变量 。 模版字符串特点 内容中可以直接…

C#进程间消息传递

C#是一种流行的编程语言&#xff0c;它可以用于开发Windows应用程序。在开发Windows应用程序时&#xff0c;有时需要进行进程间通信&#xff0c;以实现不同进程之间的数据传递和交互。C#提供了多种方式来进行进程间消息传递&#xff0c;包括管道、共享内存、消息队列等。在本文…

chapter11-实战成绩通知短信系统(上)

恭喜各位同学&#xff01;当你看到这篇文章的时候&#xff0c;意味着你已经从刚开始的“一无所知”&#xff0c;变成了现在的“爬虫新手”&#xff01;在之前的文章中&#xff0c;我们从最基础的知识点讲起&#xff0c;一步一步的学习了怎么使用Python爬取我们想要获取的信息&a…

Angular系列教程之模板语法

文章目录 前言一、模板语法基础二、模板指令三、模板表达式四、模板语法示例五、注意事项五、总结 前言 Angular是一款流行的前端开发框架&#xff0c;它提供了许多功能和工具来简化前端开发过程。其中&#xff0c;模板语法是Angular中一个非常关键的组成部分&#xff0c;它可…

Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

无标签人群技术&#xff0c;作者引入了一种排名。 利用的是一个图的人群数量一定小于等于包含这个图的图 生成排名数据集 作者提出了一种自监督任务&#xff0c;利用的是一个图的人群数量一定小于等于包含这个图的图 流程&#xff1a; 1.以图像中心为中心&#xff0c;划分一…

幻兽帕鲁保姆级搭建服务器,开服教程(LINUX)

一、购买与连接服务器 1.购买服务器 官方文档推荐的服务器要求CPU4核心内存8GB&#xff0c;所以我们要准备好一个4核8GB的服务器。(实测2核4GB的大概在5人左右就特别容易崩溃&#xff0c;CPU占用率在98%&#xff0c;内存占用很快就超过100%溢出&#xff0c;所以想要稳定最低最低…

从零开始的OpenGL光栅化渲染器构建4-延迟渲染及其类似应用

前言 首先介绍一下什么是延迟渲染。延迟渲染是一种先计算场景中的顶点、颜色、法线等信息&#xff0c;将其存入缓冲&#xff0c;再进行光照计算的渲染技术&#xff0c;与直接渲染是相对的概念。为了详细介绍延迟渲染&#xff0c;我们首先需要了解帧缓冲&#xff0c;以及帧缓冲…

C++入门学习(十)如何显示浮点数的完整形态

在C中&#xff0c;如果你想要显示浮点数的完整数字&#xff08;包括小数部分和指数部分&#xff09;&#xff0c;可以使用 std::setprecision 和 std::fixed 来设置精度和固定小数点表示&#xff1a; #include <iostream> #include <iomanip> // 必须包含这个头…

深入剖析:Kafka流数据处理引擎的核心面试问题解析75问(5.7万字参考答案)

Kafka 是一款开源的分布式流处理平台&#xff0c;被广泛应用于构建实时数据管道、日志聚合、事件驱动的架构等场景。本文将深入探究 Kafka 的基本原理、特点以及其在实际应用中的价值和作用。 Kafka 的基本原理是建立在发布-订阅模式之上的。生产者将消息发布到主题&#xff08…

Kafka-消费者-KafkaConsumer分析-Heartbeat

在前面分析Rebalance操作的原理时介绍到&#xff0c;消费者定期向服务端的GroupCoordinator发送HeartbeatRequest来确定彼此在线。 下面就来详细分析KafkaConsumer中Heartbeat的相关实现。 首先了解一下心跳请求和响应的格式。HeartbeatRequest的消息体格式比较简单&#xff…

CTFhub-bak文件

CTFhub-Web-信息泄露-备份文件下载-bak文件 题目信息 解题过程 看到提示说和index.php有关&#xff0c;在url后面加index.php.bak&#xff0c;跳转到http://challenge-7a4da2076cfabae6.sandbox.ctfhub.com:10800/index.php.bak网址&#xff0c;即&#xff1a; 跳转到下载页…

安装ddddocr中遇到的问题

1、需要先安装&#xff1a; pip3 install pyinstaller --no-use-pep517 pip install scikit-build pip install setuptools pip install pyinstaller pip install pillow 重要是的是保证一个python 环境&#xff0c;多个python环境会导致各种问题。并且保证python>3.8…

万辰集团十年经营首度亏损,泡沫式增长是喜是忧?

2023年&#xff0c;线下消费回暖复苏&#xff0c;零售领域更是繁花似锦。以量贩零食为代表的新业态蓬勃发展&#xff0c;引得众多资本和企业纷至沓来。 这一背景下&#xff0c;作为新兴量贩零食的典型代表之一&#xff0c;福建万辰生物科技集团股份有限公司&#xff08;以下简…