【Java EE 】认识文件与Java文件操作

目录

  • 🍀认识文件
    • 🌸树型结构组织 和 目录
    • 🌸文件路径(Path)
    • 🌸其他知识
  • 🌳Java 中操作文件
    • 🌸File 概述
      • 🌻属性
      • 🌻构造方法
      • 🌻方法
    • 🌸代码示例
      • 1. 观察 get 系列的特点和差异
      • 2.普通文件的创建、删除
      • 3.普通文件的删除
      • 4.观察 deleteOnExit 的现象
      • 5.观察⽬录的创建
      • 6.观察⽬录创建2
      • 7.观察⽂件重命名
  • ⭕总结

🍀认识文件

我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进⾏数据保存时,
往往不是保存成⼀个整体,⽽是独⽴成⼀个个的单位进⾏保存,这个独⽴的单位就被抽象成⽂件的概
念,就类似办公桌上的⼀份份真实的⽂件⼀般。
在这里插入图片描述
⽂件除了有数据内容之外,还有⼀部分信息,例如⽂件名、⽂件类型、⽂件⼤⼩等并不作为⽂件的数
据⽽存在,我们把这部分信息可以视为⽂件的元信息。
在这里插入图片描述

🌸树型结构组织 和 目录

同时,随着⽂件越来越多,对⽂件的系统管理也被提上了⽇程,如何进⾏⽂件的组织呢,⼀种合乎⾃
然的想法出现了,就是按照层级结构进⾏组织⸺也就是我们数据结构中学习过的树形结构。这样,
⼀种专⻔⽤来存放管理信息的特殊⽂件诞⽣了,也就是我们平时所谓⽂件夹(folder)或者⽬录
(directory)的概念。
在这里插入图片描述
在这里插入图片描述

🌸文件路径(Path)

如何在⽂件系统中如何定位我们的⼀个唯⼀的⽂件就成为当前要解决的问题,但这难不倒计算机科学
家,因为从树型结构的⻆度来看,树中的每个结点都可以被⼀条从根开始,⼀直到达的结点的路径所
描述,⽽这种描述⽅式就被称为⽂件的绝对路径(absolute path)。
在这里插入图片描述
除了可以从根开始进⾏路径的描述,我们可以从任意结点出发,进⾏路径的描述,⽽这种描述⽅式就
被称为相对路径(relative path),相对于当前所在结点的⼀条路径。
在这里插入图片描述

🌸其他知识

即使是普通⽂件,根据其保存数据的不同,也经常被分为不同的类型,我们⼀般简单的划分为⽂本⽂
⼆进制⽂件,分别指代保存被字符集编码的⽂本和按照标准格式保存的⾮被字符集编码过的⽂
件。

在这里插入图片描述
在这里插入图片描述
Windows 操作系统上,会按照⽂件名中的后缀来确定⽂件类型以及该类型⽂件的默认打开程序。但这
个习俗并不是通⽤的,在 OSX、Unix、Linux 等操作系统上,就没有这样的习惯,⼀般不对⽂件类型
做如此精确地分类。
在这里插入图片描述
⽂件由于被操作系统进⾏了管理,所以根据不同的⽤⼾,会赋予⽤⼾不同的对待该⽂件的权限,⼀般
地可以认为有可读、可写、可执⾏权限。
在这里插入图片描述
Windows 操作系统上,还有⼀类⽂件⽐较特殊,就是平时我们看到的快捷⽅式(shortcut),这种⽂
件只是对真实⽂件的⼀种引⽤⽽已。其他操作系统上也有类似的概念,例如,软链接(soft link)等。
在这里插入图片描述
最后,很多操作系统为了实现接⼝的统⼀性,将所有的 I/O 设备都抽象成了⽂件的概念,使⽤这⼀理念最为知名的就是 Unix、Linux 操作系统⸺万物皆⽂件

🌳Java 中操作文件

本节内容中,我们主要涉及⽂件的元信息、路径的操作,暂时不涉及关于⽂件中内容的读写操作。
Java 中通过java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。

注意,有 File 对象,
并不代表真实存在该⽂件。

🌸File 概述

我们先来看看 File 类中的常见属性、构造⽅法和⽅法

🌻属性

在这里插入图片描述

🌻构造方法

在这里插入图片描述

🌻方法

在这里插入图片描述

🌸代码示例

1. 观察 get 系列的特点和差异

import java.io.File;import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("..\\hello-world.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());}
}

运⾏结果

..
hello-world.txt
..\hello-world.txt
D:\代码练习\⽂件⽰例1\..\hello-world.txt
D:\代码练习\hello-world.txt

2.普通文件的创建、删除

import java.io.File;import java.io.IOException;
public class Main {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());}
}

运⾏结果

false
false
false
true
true
false
true
false

3.普通文件的删除

import java.io.File;import java.io.IOException;
public class Main {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());}
}

运⾏结果

false
true
true
true
false

4.观察 deleteOnExit 的现象

import java.io.File;import java.io.IOException;
public class Main {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());file.deleteOnExit();System.out.println(file.exists());}
}

运⾏结果

false
true
true
true

程序运⾏结束后,⽂件还是被删除了

5.观察⽬录的创建

import java.io.File;import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {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());}
}

运⾏结果

false
false
true
true
false

6.观察⽬录创建2

import java.io.File;import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File dir = new File("some-parent\\some-dir"); // some-parent 和 soSystem.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdir());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}

运⾏结果

false
false
false
false
false

mkdir() 的时候,如果中间⽬录不存在,则⽆法创建成功; mkdirs() 可以解决这个问题。

import java.io.File;
import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File dir = new File("some-parent\\some-dir"); // some-parent 和 soSystem.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdirs());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}

运⾏结果

false
false
true
true
false

7.观察⽂件重命名

import java.io.File;import java.io.IOException;
public class Main {public static void main(String[] args) throws IOException {File file = new File("some-file.txt"); // 要求 some-file.txt 得存在File dest = new File("dest.txt"); // 要求 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());}
}

运⾏结果

true
false
true
false
true

⭕总结

关于《【Java EE 】认识文件与Java文件操作》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

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

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

相关文章

【论文精读】I-JEPA

摘要 计算机视觉中,常采用基于不变性和基于生成的方法进行自监督学习。对比学习(CL)是典型的基于不变性的方法,通过预训练方法优化编码器,使其能生成同一图像的两个或多个视图的相似嵌入,其中图像视图通常由…

【Linux实践室】Linux常用命令

🌈个人主页:聆风吟 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux文件操作2.1.1 👻创建文件2…

【vue.js】文档解读【day 1】 | 模板语法2

如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 文章目录 模板语法JavaScript表达式仅支持表达式调用函数?受限的全局访问 指令参数动态参数动态参数中…

面试题HTML+CSS+网络+浏览器篇

文章目录 Css预处理sass less是什么?为什么使用他们怎么转换 less 为 css?重绘和回流是什么http 是什么?有什么特点HTTP 协议和 HTTPS 区别什么是 CSRF 攻击HTML5 新增的内容有哪些Css3 新增的特性flex VS grid清除浮动的方式有哪些&#xff…

Yolov8改进交流

YOLO v8改进 YOLOv8的改进,我接触的主要分为网络改进和代码改进,网络改进就是以注意力、主干为主,代码改进就是类似于Iou,类别权重等修改。 以下是yolov8的原始模型。 # Ultralytics YOLO 🚀, AGPL-3.0 license # YO…

Tensorflow2.0+部署(tensorflow/serving)过程备忘记录Windows

Tensorflow2.0部署(tensorflow/serving)过程备忘记录 部署思路:采用Tensorflow自带的serving进模型部署,采用容器docker 1.首先安装docker 下载地址(下载windows版本):https://desktop.docke…

[译]BNF 表示法:深入了解 Python 的语法

[译]BNF 表示法:深入了解 Python 的语法 原文:《BNF Notation: Dive Deeper Into Python’s Grammar》 https://realpython.com/python-bnf-notation/ 在阅读Python文档的时候,你可能已经遇到过BNF(Backus–Naur form)表示法: 下…

自动化测试摸索:python+selenium+pytest(持续更新.....)

一、环境搭建 1、python 安装 下载链接:Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时,找到该安装程序:python-3.12.2-amd64.exe文件,双击启动安装向导。 为了防止C:盘文件因系统故障或者无…

鸿蒙 Stage模型-AbilityStage、Context、Want

前提:基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。(或有偏颇,自行斟酌) 一、 AbilityStage 1.概念 AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilitySt…

融资项目——nacos注册中心

1.在分布式微服务架构中,注册中心是核心的基础服务之一。 2.服务治理的实现主要依靠的就是注册中心,用来进行服务的发现与注册。 一、服务注册 就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到注册中心上去。例如B服务在某些服务器上线…

租房招聘平台新篇章:Java+SpringBoot技术革新

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

k8s-prometheus应用监控 23

使用prometheus监控,结合prometheus传递的指标,从而实现业务监控的自动化弹缩。 注:部署集群需要消耗较大的内存,需要提前扩容各节点的内存量至少达到4g 部署一个用于被监控的应用 上传所需镜像 修改yaml文件 部署完成 没有就绪是…

Linux检查软件信息及Linux清理日志等功能

提示:工具下载链接在文章最后 目录 一.ywtool check命令1.1 ywtool check -I1.2 ywtool check all1.3 ywtool check io1.4 ywtool check elk1.5 ywtool check php1.6 ywtool check mysql1.7 ywtool check nginx1.8 ywtool check system1.9 ywtool check docker_nbip [容器名称]…

MyCAT集群——MyCAT2如何配置读写分离

先搭载MySQL一主两从 192.168.20.110MyCAT192.168.20.111Master192.168.20.112slave1192.168.20.113slave2 配置就不写了,比较基础,写一下步骤 1.进入mysql配置文件或者其子配置文件,添加server_id,开启gtidgtid_modeON,enforce-gtid-cons…

STM32:CAN功能板设计和调试

0前言 本文主要目的是,总结去年设计stm32-CAN板子过程中遇到的问题,分为keil嵌入式软件和嘉立创EDA设计两个部分。 1 STM32F1 CAN功能 keil expected a “}“ 问题在于,PCB使用芯片为stm32f103c8t6,下载程序时选择device默认此…

项目部署发布

目录 上传数据库 修改代码中的数据源配置 修改配置文件中的日志级别和日志目录 打包程序 ​编辑​编辑 上传程序 查看进程是否在运行 以及端口 云服务器开放端口(项目所需要的端口) 上传数据库 通过xshell控制服务器 创建目录 mkdir bit_forum 然后进入该目录 查看路…

012 Linux_线程控制

前言 本文将会向你介绍线程控制(创建(请见上文),终止,等待,分离) 线程控制 线程终止 pthread_t pthread_self(void); 获取线程自身的ID 如果需要只终止某个线程而不终止整个进程,可以有三种…

【C语言】Leetcode 206.反转链表

博主主页:17_Kevin-CSDN博客 收录专栏:《Leetcode》 题目 解决思路 思路一:翻转链表 struct ListNode* reverseList(struct ListNode* head) {if(head NULL){return NULL;}struct ListNode* n1 NULL,*n2 head,*n3 n2 -> next;while(…

线上问题——学习记录幂等判断失效问题分析

一、业务流程 上图是对save和saveScore两个接口的流程抽象,save是上传答题数据,saveScore则是上传答题分数,为保证幂等和防止并发调用,这两个接口都加了分布式锁(还是两层哦)。第一层使用的是不同的锁&…

【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag) 二、相关配置字段 non_roaming_operator_string_array 是否…