【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表达式仅支持表达式调用函数?受限的全局访问 指令参数动态参数动态参数中…

mysql将列默认值设置为uuid

使用mysql版本为8.1.0 建表时设置 create table test(uuid varchar(100) NOT NULL default (uuid()) ,aaaa varchar(100) not null default (uuid()) ,primary key(uuid) );可以看到主键和普通列都可以设置,但是要注意uuid()要加上括号,否则会报错 修…

面试题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…

android开发基础自学,Android开发学习视频

谈起性能优化,我想问, 什么是性能优化?你的理解呢? **首先什么是性能:**在同一个手机里面,同样功能的app,哪个跑的快,哪个不卡,哪个就性能高。我们这篇文章就是解决那些…

MEMGPT

1、因为安装环境时是使用的pip install pymemgpt,所以当使用memgpt run运行时,实际上运行的是/home/ubuntu/anaconda3/lib/python3.9/site-packages/memgpt环境目录中的代码。如果想要修改代码,也要在上述目录的文件中修改代码,才…

MacOS 退出默认conda环境

默认关闭 conda config --set auto_activate_base false 将false 改为true 默认打开 近推出当前环境 conda deactivate

[译]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:盘文件因系统故障或者无…

Hive SQL 开发指南(三)优化及常见异常

在大数据领域,Hive SQL 是一种常用的查询语言,用于在 Hadoop上进行数据分析和处理。为了确保代码的可读性、维护性和性能,制定一套规范化的 Hive SQL 开发规范至关重要。本文将介绍 Hive SQL 的基础知识,并提供一些规范化的开发指…

鸿蒙 Stage模型-AbilityStage、Context、Want

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

融资项目——nacos注册中心

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

前端面试练习24.3.4

目录 普通问题 说一说 严格模式和 非严格模式 关键词: 具体: SSL/TLS加密 很基础的重点 什么是原型链,说说相关的理解 接下来阐述什么原型: 关系: 说一说你对闭包的理解 闭包的核心概念有三个要素&#xff1…

使用conda安装rasa macbook亲测有效

要使用conda安装Rasa,你可以按照以下步骤进行操作: 首先,确保你已经安装了Anaconda或Miniconda,并且conda命令可以在终端或命令提示符中正常运行。 创建一个新的conda虚拟环境,专门为Rasa安装。这样做可以隔离Rasa及其…

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

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

ansible批量筛选出指定操作系统的主机列表

查看主机操作系统的shell脚本getOS.sh #!/bin/bash# 获取操作系统信息 os_info$(hostnamectl | grep Operating System | awk -F : {print $NF})# 检查是否包含"centos" if echo "$os_info" | grep -E *centos* > /dev/null; then# 打印主机IPecho &qu…

嵌入式面试常见问题(四)

1.在基于Linux的网络套接字编程中,如果需要创建一个IPv4的网络套接字,应该在socket函数中指定domain参数为AF_INET 解析: socket()函数创建套接字 函数原型:int socket(int domain, int type, int protocol); domain:协议簇&…