文件系统和IO流

news2024/9/30 13:15:31

目录

​文件系统和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
    }
}

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

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

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

相关文章

基于振弦采集仪的地下工程振动监测技术研究

基于振弦采集仪的地下工程振动监测技术研究 地下工程振动监测技术是为了监测地下工程施工过程中产生的振动而进行的研究。振弦采集仪是一种常用的地下工程振动监测设备,它通过固定在地下工程附近的振弦仪来实时采集工程施工过程中产生的振动信号。 基于振弦采集仪的…

5.文本文件编辑命令

1.cat 用于查看纯文本文件(内容较少的) 加上-n参数,显示内容加行号 [rootlocalhost ~]# cat -n /etc/sysconfig/network-scripts/ifcfg-ens160 2.more 用于查看纯文本文件(内容较多的) 还可以使用空格键或回车 键…

Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456

一、前言 在嵌入式板子上由于没有系统层面的输入法支持,所以都绕不开一个问题,那就是在需要输入的UI软件中,必须提供一个输入法来进行输入,大概从Qt5.7开始官方提供了输入法的源码,作为插件的形式加入到Qt中&#xff…

Spring Boot整合Druid(druid 和 druid-spring-boot-starter)

引言 在现代的Web应用开发中,高性能的数据库连接池是确保应用稳定性和响应性的关键因素之一。Druid是一个开源的高性能数据库连接池,具有强大的监控和统计功能,能够在Spring Boot应用中提供出色的数据库连接管理。本文将研究在Spring Boot中…

L1-048 矩阵A乘以B(Java)

给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列,B有Rb行、Cb列,则只有Ca与Rb相等时,两个矩阵才能相乘。 输入格式: 输入先后给出两个矩阵…

Redis--Geo指令的语法和使用场景举例(附近的人功能)

文章目录 前言Geo介绍Geo指令使用使用场景:附近的人参考文献 前言 Redis除了常见的五种数据类型之外,其实还有一些少见的数据结构,如Geo,HyperLogLog等。虽然它们少见,但是作用却不容小觑。本文将介绍Geo指令的语法和…

jrebel IDEA 热部署

1 下载 2022.4.1 JRebel and XRebel - IntelliJ IDEs Plugin | Marketplace 2 选择下载好的zip 离线安装IDEA 插件 重启IDEA 3 打开 [Preference -> JRebel & XRebel] 菜单,输入 GUID address 为 https://jrebel.qekang.com/1e67ec1b-122f-4708-87d…

尚硅谷Nginx高级配置笔记

写在前面:本笔记是学习尚硅谷nginx可成的时候的笔记,不是原创,如有需要,可以去官网看视频,以下是pdf文件 Nginx高级 第一部分:扩容 通过扩容提升整体吞吐量 1.单机垂直扩容:硬件资源增加 云…

[HTML]Web前端开发技术14(HTML5、CSS3、JavaScript )鼠标经过图片显示大图 网页标题:表格标签的综合应用——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

Flink TaskManager内存管理机制介绍与调优总结

内存模型 因为 TaskManager 是负责执行用户代码的角色,一般配置 TaskManager 内存的情况会比较多,所以本文当作重点讲解。根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用,增强作业运行的稳定性。 TaskManager 内…

Docker(二)安装指南:主要介绍 Docker 在 Linux 、Windows 10 和 macOS 上的安装

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 安装 Docker Docker 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker 在…

没有统计学背景的人学六西格玛:挑战与机遇并存

在当今追求高效率、高品质的时代,六西格玛方法已成为企业提升竞争力的关键法宝。但对于众多没有统计学背景的朋友来说,这一方法仿佛高不可攀。今天,就让我们一同探索,没有统计学背景的人学习六西格玛到底难不难? 一、难…

el-table实现搜索高亮展示并滚动到元素位置

效果展示&#xff1a; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…

年龄性别预测2:Pytorch实现年龄性别预测和识别(含训练代码和数据)

年龄性别预测2&#xff1a;Pytorch实现年龄性别预测和识别(含训练代码和数据) 目录 年龄性别预测2&#xff1a;Pytorch实现年龄性别预测和识别(含训练代码和数据) 1.年龄性别预测和识别方法 2.年龄性别预测和识别数据集 3.人脸检测模型 4.年龄性别预测和识别模型训练 &a…

Oracle行转列函数,列转行函数

Oracle行转列函数&#xff0c;列转行函数 Oracle 可以通过PIVOT,UNPIVOT,分解一行里面的值为多个列,及来合并多个列为一行。 PIVOT PIVOT是用于将行数据转换为列数据的查询操作(类似数据透视表)。通过使用PIVOT&#xff0c;您可以按照特定的列值将数据进行汇总&#xff0c;并将…

Maxwell介绍

一、介绍 介绍&#xff1a;它读取MySQL binlog并将数据更改作为JSON写入Kafka、Kinesis和其他流媒体平台&#xff08;目前支持&#xff1a;kafka、RabbitMQ、Redis、file、Kinesis、Nats、Google Cloud Pub/Sub、Google Cloud Bigquery、SNS&#xff09; 版本&#xff1a;从v1.…

Git教程学习:01 Git简介与安装

目录 1 版本控制1.1 什么是版本控制系统&#xff1f;1.2 本地版本控制系统1.3 集中式版本控制系统1.4 分布式版本控制系统 2 Git简史3 Git的安装3.1 在Linux上安装3.2 初次运行Git前的配置 1 版本控制 1.1 什么是版本控制系统&#xff1f; 版本控制系统(Version Control Syst…

css 居中方式

居中分为水平居中和垂直居中 1. 水平居中1.1 文字text-align:center;1.2 盒子1.2.1&#xff1a;inline-block text-align 一 center;1.2.2&#xff1a;absolutetransform 一 父元素 display:relative;子元素 display:absolute; left:50%;transform: translatex(-50%);1.2.3&a…

一个好用的工具,对网工来说是绝杀技!

上午好&#xff0c;我是老杨。 提到用人&#xff0c;很多单位和管理者第一反应都是应聘者的能力。能力到底怎么界定&#xff0c;其实每个人都有不同的判定标准。 在我看来&#xff0c;做事专注&#xff0c;且能尽可能“偷懒”的网工 &#xff0c;就是我个人筛选员工的标准。 …

游戏开发要注意这几个问题

游戏开发是一个充满创意和挑战的过程。对于初学者和经验丰富的开发者来说&#xff0c;每个项目都是一个新的学习机会。然而&#xff0c;成功的游戏开发不仅仅是关于编码和设计&#xff1b;它还涉及到细致的规划、测试和市场洞察。以下是在开发游戏时需要特别注意的几个关键方面…