文件系统和IO流

目录

​文件系统和IO流

一:文件的认知

认识文件

树型结构组织和⽬录:

文件路径(Path):

文件形式:

二:File的方法

File的概述:

File的属性

File的构造方法

File常用的get系列方法

  • ⽰例一:观察get系列的特点和差异

File常用的增,删方法

  • 示例二:普通文件的创建、删除(代码结果已写在该代码后面)

File常用的生成目录的系列方法

  • 示例三:目录的创建:mkdir()的时候,如果中间目录不存在,则无法创建成功;mkdirs()可以解决这个问题(代码结果已写在该代码后面)

在这里插入图片描述

一:文件的认知

认识文件

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

树型结构组织和⽬录:

同时,随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,⼀种合乎自然的想法出现了,就是按照层级结构进行组织也就是我们数据结构中学习过的树形结构。这样,
⼀种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓文件夹(folder)或者目录
(directory)的概念。
 

文件路径(Path):

如何在⽂件系统中如何定位我们的⼀个唯⼀的文件就成为当前要解决的问题,但这难不倒计算机科学家

  • 绝对路径(absolute   path):从树型结构的⻆度来看,树中的每个结点都可以被⼀条从根开始,⼀直到达的结点的路径所描述
  • 相对路径(relative path):从任意结点出发,进行路径的描述

文件形式:

  • 二进制文件:按照标准格式保存的非被字符集编码过的文件,也就是通过记事本打开,里面存储的都是看不懂的乱码.
  • 文本文件:保存被字符集编码的文本,打开就是文件的内容.

二:File的方法

File的概述:


主要涉及文件的元信息、路径的操作,Java中通过 java.io.File 类来对⼀个文件(包括目录)进行抽象的描述。注意,有File对象,并不代表真实存在该文件,我们先来看看File 类中的常见属性、构造方法和方法

File的属性

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

File的构造方法

签名说明
File(File          parent,        String        child)根据⽗⽬录+孩⼦⽂件路径,创建⼀个新的File实例
File(String        pathname)根据⽂件路径创建⼀个新的File实例,路径可以是绝
对路径或者相对路径
File(String        parent,        String        child)根据⽗⽬录+孩⼦⽂件路径,创建⼀个新的File实
例,⽗⽬录⽤路径表⽰

File常用的get系列方法

修饰符及返回值类型方法签名说明
StringgetParent()返回File对象的⽗⽬录⽂件路径
StringgetName()返回FIle对象的纯文件名称
StringgetPath()返回File对象的⽂件路径
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象的修饰过的绝对路径

  • ⽰例一:观察get系列的特点和差异

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

代码结果:

File常用的增,删方法

booleanexists()判断File对象描述的⽂件是否真实存在
booleanisDirectory()判断File对象代表的⽂件是否是⼀
个⽬录
booleanisFile()判断File对象代表的⽂件是否是⼀
个普通⽂件
booleancreateNewFile()根据File对象,⾃动创建⼀个空⽂
件。成功创建后返回true
booleandelete()根据File对象,删除该⽂件。成功
删除后返回true
voiddeleteOnExit()根据File对象,标注⽂件将被删
除,删除动作会到JVM运⾏结束时
才会进⾏

  • 示例二:普通文件的创建、删除(代码结果已写在该代码后面)

import java.io.File;
import java.io.IOException;
public class Test {
    public static void main(String[] args) throws IOException {
        File file = new File("hello-world.txt"); // 要求该⽂件不存在,才能看
        System.out.println(file.exists());                //false
        System.out.println(file.isDirectory());           //false
        System.out.println(file.isFile());                //false
        System.out.println(file.createNewFile());         //true
        System.out.println(file.exists());                //true
        System.out.println(file.isDirectory());           //false
        System.out.println(file.isFile());                //true
        System.out.println(file.createNewFile());         //false
        System.out.println(file.delete());                //true
        System.out.println(file.exists());                 //false
    }
}

File常用的生成目录的系列方法

String[]list()返回File对象代表的⽬录下的所有
⽂件名
File[]listFiles()返回File对象代表的⽬录下的所有
⽂件,以File对象表⽰
booleanmkdir()创建File对象代表的⽬录
booleanmkdirs()创建File对象代表的⽬录,如果必
要,会创建中间⽬录
booleanrenameTo(File dest)进⾏⽂件改名,也可以视为我们平
时的剪切、粘贴操作
booleancanRead()判断⽤⼾是否对⽂件有可读权限
booleancanWrite()判断⽤⼾是否对⽂件有可写权限

  • 示例三:目录的创建:mkdir()的时候,如果中间目录不存在,则无法创建成功;mkdirs()可以解决这个问题(代码结果已写在该代码后面)

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

如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!💓 💓 💓

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

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

相关文章

AI小程序添加深度合成类目解决办法

基于文言一心和gpt等大模型做了一个ai助理小程序,在提交“一点AI助理”小程序时,审核如下: 失败原因1 审核失败原因 你好,你的小程序涉及提供提供文本深度合成技术 (如: AI问答) 等相关服务,请补充选择:深度…

JVM:性能监控工具分析和线上问题排查实践

前言 在日常开发过程中,多少都会碰到一些jvm相关的问题,比如:内存溢出、内存泄漏、cpu利用率飙升到100%、线程死锁、应用异常宕机等。 在这个日益内卷的环境,如何运用好工具分析jvm问题,成为每个java攻城狮必备的技能…

记录自己 自学摸索 学习日语:新标日

新标日 几节课合成在一起太乱了 第四课会更新个集合 自学日语吧算是 摸索中! 尽量一周一课 第一课 单词 ちゅうごくじん 中国人 中国人 にほんじん 日本人 日本人 あめりかじん アメリカ人 美国人 かんこくじん 韓国人 韩国人 ふらんすじん フラン…

基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 双边滤波数学模型 4.2 双边滤波的特性 4.3 FPGA实现架构 5.算法完整程序工程 1.算法运行效果图预览 将FPGA数据导入到matlab对比测试: 2.算法运行软件版本 vivado2019.2 …

极致画质与流畅播放的完美结合,只在ProVideoPlayer for Mac!

ProVideoPlayer for Mac 是一款功能强大的专业级视频播放软件,旨在提供出色的用户体验和无与伦比的功能。以下是它的一些主要功能介绍: 多格式兼容:ProVideoPlayer for Mac 支持广泛的视频格式,包括常见的MP4、AVI、MOV&#xff0…

docker里Java服务执行ping命令模拟流式输出

文章目录 业务场景处理解决实现ping功能并实时返回输出实现长ping和中断请求docker容器找不到ping命令处理 业务场景 我们某市的客户,一直使用CS版本的信控平台,直接安装客户Windows server服务器上,主要对信号机设备进行在线管理、方案配时…

输电线路分布式故障定位监测装置:保障电力系统的稳定运行

随着电力系统的不断发展和电力需求的日益增长,输电线路的稳定性和安全性显得尤为重要。为了确保电力系统的正常运行,我国科研人员研发出了一种新型的输电线路分布式故障定位监测装置,它能够实时监测输电线路的运行状态,及时发现并…

全网最全Stable diffusion保姆级教程「安装-配置-画图」,小白必收藏!!

随着chat gpt爆火之后,越来越多的人开始关注人工智能,人工智能相关的其他应用如AI绘画,也再次得到人们的关注。AI绘画的确很上头,最近几天小编也研究一下,这里把研究的过程以及中间遇到的问题整理一下,我这…

【办公类-21-02】20240118育婴员操作题word打印2.0

作品展示 把12页一套的操作题批量制作10份,便于打印 背景需求 将昨天整理的育婴师操作题共享, 因为题目里面有大量的红蓝颜色文字,中大班办公室都是黑白单面手动翻页打印。只有我待的教务室办公室有彩色打印机打印(可以自动双面…

每日一题——LeetCode1252.奇数值单元格的数目

进阶:你可以设计一个时间复杂度为 O(n m indices.length) 且仅用 O(n m) 额外空间的算法来解决此问题吗? 方法一 直接模拟: 创建一个n x m的矩阵,初始化所有元素为0,对于indices中的每一对[ri,ci],将矩…

精品量化公式——“低位擒妖”,擒妖指标终极版,成功率百分99,无未来

不多说,直接上效果如图: ► 日线表现 代码评估 技术指标代码评估: X_1:55; X_2:34; 这两行设定了两个变量 X_1 和 X_2 的值分别为 55 和 34。这些值可能用于后续计算的时间周期参数。 X_3:100*(HHV(HIGH,X_1)-CLOSE)/(HHV(HIGH,X_1)-LLV(…

鹅厂有料有趣的程序员交流圈重磅官宣!加入立享福利

号外!腾讯云开发者社区重磅上线海量社群,覆盖开发者技术学习交流、工作成长、生活分享等多元场景需求,用最新鲜的内容,最好玩的互动,与你一起共创最有料有趣的技术人交流圈~ 最有料有趣交流圈在这里你可以畅…

oracle中常用的一些函数,巧用函数,减少代码量

1.sign(x) 【功能】参数x为数值型或者字符串数值型,若为正值返回1,负值回-1,0返回0 2.floor(x) 【功能】返回小于等于x的最大整数值 3.ceil(x) 【功能】返回大于等于x的最小整数值 4.round(x[,y]) 【功能】返回四舍五入后的值 参数x,y数字型表达式,…

微信小程序(四)页面跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 1.相对路径页面跳转 2. 绝对路径页面跳转 index.wxml <!-- navigator是块级元素&#xff0c;占一整行 --> <!-- 页面跳转url&#xff0c;相对路径 --> <navigator url"../logs/logs"><butto…

MySQL主从复制原理与实践:从配置到故障监控

文章目录 前言主从复制原理复制源主节点的工作从节点的工作复制流程的设计 主从复制环境搭建一、主从节点配置二、从节点开启复制步骤1、备份主节点的数据2、将数据同步到从节点3、从节点复制参数配置 三、验证复制环境 主从复制故障监控监控主从复制状态监控主从复制延迟 总结…

Improving Generative Modelling in VAEs Using Multimodal Prior

local representation vector r&#xff0c; ϵ \epsilon ϵ is i.i.d Gaussian 额外信息 作者未提供代码

【机组】时序与启停实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​ 目录 &#x1f33a;一、 实验目…

ABAP IDOC 相关报表

上代码 干货来了 *&---------------------------------------------------------------------* *& REPORT ZRPT_FI_IDOC_R *& *&---------------------------------------------------------------------* *& author ABAP02 *& date 20240103 *&…

K8S-YAML

一、Kubernetes对象的描述 kubernetes中资源可以使用YAML描述&#xff08;如果您对YAML格式不了解&#xff0c;可以参考YAML语法&#xff09;&#xff0c;也可以使用JSON。其内容可以分为如下四个部分&#xff1a; typeMeta&#xff1a;对象类型的元信息&#xff0c;声明对象…

共同学习|Spring Cloud Alibaba一一Nacos介绍

接着上篇我们介绍的Spring Cloud Alibaba&#xff0c;下面来继续学习构建云原生应用的动态服务发现、配置管理和服务管理平台——Nacos介绍。 共同学习|Spring Cloud Alibaba一一简介篇-CSDN博客 3、Nacos介绍 Redirecting to: https://nacos.io/ 什么是nacos&#xff1f; …