JavaEE-文件和IO(一)

news2025/1/15 22:59:38

目录

  • 一、文件
    • 1.1 认识文件
    • 1.2 树型结构组织和目录
    • 1.3 文件路径
  • 二、Java中操作文件
    • 2.1 文件系统相关的操作

一、文件

1.1 认识文件

平时说的文件一般都是指存储再硬盘上的普通文件,形如txt,jpg,MP4,rar等这些文件都可以认为是普通文件,它们都是再硬盘上存储的。

在计算机中,文件可能是一个广义的概念,就不只是包含普通文件,还可以包含目录(把目录称为目录文件)
文件可以是文本文档、图片、程序等等。文件通常具有点+三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以JPEG格式保存并且文件扩展名为.jpg)。

普通文件是保存在硬盘上的。

机械硬盘的基本构造:
1.盘片,存储数据的介质
2.磁头

针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,
往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概
念,就类似办公桌上的一份份真实的文件一般。
在这里插入图片描述
文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据
而存在,我们把这部分信息可以视为文件的元信息。
在这里插入图片描述
文件的分类(站在程序员的角度)
主要把文件分为两类
1.文本文件,里面存储的是字符,文本文件本质上也是存字节的,但是文本文件中相邻的字节在一起正好构成一个个字符。
2.二进制文件,里面存储的是字节

在这里插入图片描述

1.2 树型结构组织和目录

计算机里,保存管理文件,是通过操作系统中“文件系统”这样的模块来负责的。

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

1.3 文件路径

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

在这里插入图片描述
即使是定位到同一个文件,如果基准目录不同,此时相对路径也不同。

二、Java中操作文件

2.1 文件系统相关的操作

文件系统相关的操作指的是通过”文件资源管理器“能够完成的一些功能。
功能:

  1. 列出目录中有哪些文件
  2. 创建文件
  3. 创建目录
  4. 删除文件
  5. 重命名文件

在Java中提供了一个File类,通过这个类来完成上述操作
首先File类就描述一个文件/目录

File的构造方法,能够传入一个路径,来指定一个文件,这个路径可以是绝对路径也可以是相对路径

在这里插入图片描述
文件操作,也是一种输入输出,File这个东西也就在IO中
在这里插入图片描述
在这里插入图片描述
这样就可以定位到具体的文件,是以绝对路径的方式。
在这里插入图片描述
谈到相对路径,一顶得先明确一个“基准路径”

  1. 如果是通过命令行的方式(java.Demo),此时执行命令所在的目录,就是基准路径
  2. 如果是通过IDEA的方式来运行程序,此时基准路径就是当前Java项目所在的路径
  3. 把一个java代码打残war包,放到tomcat上运行
    这种情况下基准路径就是tomcat的bin目录
    一旦路径指定错了,很容易出现找不到的情况~
package file;

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

@SuppressWarnings({"all"})
public class Demo {

    public static void main(String[] args) throws IOException {

        File f = new File("d:/text.txt");
        // 获取到文件的父目录
        System.out.println(f.getParent());
        // 获取到文件名
        System.out.println(f.getName());
        // 获取到文件路径
        System.out.println(f.getPath());
        // 获取到绝对路径
        System.out.println(f.getAbsolutePath());
        // 获取到绝对路径
        System.out.println(f.getCanonicalPath());
        System.out.println("===================");
        File f2 = new File("./test.txt");

        // 获取到文件的父目录
        System.out.println(f2.getParent());
        // 获取到文件名
        System.out.println(f2.getName());
        // 获取到文件路径
        System.out.println(f2.getPath());
        // 获取到绝对路径
        System.out.println(f2.getAbsolutePath());
        // 获取到绝对路径
        System.out.println(f2.getCanonicalPath());

    }

}

在这里插入图片描述
在这里插入图片描述
其他的功能这里就不赘述了。

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

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

相关文章

Java集合常见面试题(四)

Map 接口 HashMap 的底层实现 JDK1.8 之前 JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的。 HashMap 通过 key 的 hashcode 经过扰动函数(hash函数&…

JAVA基础知识08集合基础

目录 1. 集合 1.1 什么是集合? 1.2 ArrayList 1.2.1 ArrayList 长度可变原理 1.2.2 集合和数组的使用选择 1.2.3 ArrayList 集合常用成员方法 1. 集合 1.1 什么是集合? 集合是一种容器,用来装数据的,类似于数组。 其长度可…

线段树的懒标记与应用

目录 一、前言 二、Lazy-tag技术 1、update() 中的lazy-tag 三、例题 1、区间修改、区间查询(lanqiaoOJ 1133) 一、前言 本文主要讲了线段树的Lazy-tag技术和一道例题,建议自己要多练习线段树的题目。 二、Lazy-tag技术 背景&#xf…

水面漂浮物垃圾识别检测系统 YOlOv7

水面漂浮物垃圾识别检测系统通过PythonYOLOv7网络模型,实现对水面漂浮物以及生活各种垃圾等全天候24小时不间断智能化检测。Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和代码可读性。它使…

Linux- 系统随你玩之--文本处理三剑客-带头一哥-awk

文章目录1、awk概述2、awk原理2.1、 awk 工作原理2.2、 与sed工作原理比较2.3、 awk与sed的区别3、使用方法及原理3.1、格式如下:3.2、 匹配规则3.3、 参数说明3.4、处理规则与流程控制3.5、 常用 awk 内置变量3.6、 awk 正则表达式解释4、操作实例4.1、 准备工作4.…

(十七)抽象队列同步器AQS

AQSAbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现。类图如下,AbstractQueuedLongSynchronizer与AbstractQueuedSynchronizer结构一模一样,只是AbstractQueuedSynchro…

Springboot+java师生交流答疑作业系统

,本系统拥有学生,教师,管理员三个角色,学生可以注册登陆系统,查看新闻,查看教学,在线提问答疑,提交作业,发布交流,留言反馈等功能,教师可以发布教…

恶意代码分析实战 14 反虚拟机技术

14.1 Lab17-01 题目 这个恶意代码使用了什么反虚拟机技术? 恶意代码用存在漏洞的x86指令来确定自己是否运行在虚拟机中。 如果你有一个商业版本IDAPro,运行第17章中代码清单17-4所示的IDAPython脚本(提供如jindAniM.py)&#…

spring boot前后端交互之数据格式转换

在前后端分离开发的项目种,前端获取数据的方式基本都是通过Ajax。请求方法也有所不同,常见的有POST,GET,PUT,DELETE等。甚至连请求的数据类型都不一样,x-www-form-urlencodeed,form-data,json等。 那么在前后端交互过程中,具体的数据该如何接…

ESP32设备驱动-8x8LED点阵驱动(基于Max7219+SPI)

8x8LED点阵驱动(基于Max7219+SPI) 1、Max7219介绍 MAX7219/MAX7221是紧凑型串行输入/输出共阴极显示驱动器,可将微处理器(Ps)连接到多达8位的7段数字LED显示器、条形图显示器或64个独立LED。片上包括一个 BCD 代码 B 解码器、多路扫描电路、段和数字驱动器,以及存储每个数字…

通信电子、嵌入式类面试题刷题计划04

文章目录036——看门狗电路的作用是什么?【社招】037——你了解CAN总线协议吗?说一说你的理解【社招】038——锁存器、触发器、寄存器三者的区别?【校招】039——D触发器和D锁存器的区别是什么?【校招】040——三极管和MOS管的区别…

Cadence PCB仿真使用Allegro PCB SI生成单网络EMI报告Single Net EMI Report及报告导读图文教程

🏡《Cadence 开发合集目录》   🏡《Cadence PCB 仿真宝典目录》 目录 1,概述2,生成报告3,报告导读4,总结1,概述 单网络EMI报告是值将差分模式下的网络视为单个网络,分析来自时钟上升沿的辐射影响。本文简单介绍使用Allegro PCB SI生成单网络EMI报告的方法,及Singl…

搜索引擎位置跟踪应用SerpBear

什么是 SerpBear ? SerpBear 是一款开源搜索引擎位置跟踪应用程序。它允许你跟踪你的网站在谷歌中的关键词位置,并得到他们的位置通知。 软件特点: 无限关键词:添加无限域名和无限关键词以跟踪其 SERP电子邮件通知:每天/每周/每…

车载以太网简介

车载以太网简介 基本概念 传统车载网络 LIN:用于通信速率低的场景,比如车窗、座椅等。CAN:目前车载网络首先,低成本高可靠。FlexRay :具备故障容错的车载总线系统。MOST:内置流媒体数据信道,…

2023年企业信息安全缺陷和解决方案,防止职员外泄信息

随着网络的发展和普及,信息安全与每个人息息相关,包含方方面。每个人既是独立个体又必须和社会交换资源。这就需要把控一个尺度。 要了解信息安全,首先需要对信息有个大体了解。从拥有者和使用者分类分为,个人,企业&a…

恶意代码分析实战 11 恶意代码的网络特征

11.1 Lab14-01 问题 恶意代码使用了哪些网络库?它们的优势是什么? 使用WireShark进行动态分析。 使用另外的机器进行分析对比可知,User-Agent不是硬编码。 请求的URL值得注意。 回答:使用了URLDownloadToCacheFileA函数&#…

JavaEE多线程-定时器

目录一、定时器1.1 什么是定时器?1.2 定时器的构成二、简单实现定时器一、定时器 1.1 什么是定时器? 定时器是多线程编码中的一个重要组件,它就好比一个闹钟,例如我们想去坐车,但是不想现在去坐车,想8:30去坐车,于是我们订了一个8点钟的闹钟,也就是说定…

Linux内核驱动初探(四) 内部看门狗

目录 0. 前言 1. menuconfig 2. 设备树 3. 拓展试验 0. 前言 这次的内部看门狗驱动也比较顺利,重点看了 原理图和4.19.x 内核的配置。 内部看门狗设备名叫做 /dev/watchdog 。 1. menuconfig 我们在 linux-menuconfig 里面如下设置:进入 Device D…

[Java]JavaWeb学习笔记(动力节点老杜2022)

文章目录🥽 Tomcat服务器🌊 下载与安装🌊 关于Tomcat服务器的目录🌊 启动Tomcat🌊 实现一个最基本的web应用(这个web应用中没有java小程序)🥽 静态资源与动态资源🥽 模拟…

GPU虚拟化(留坑)

文章内容大程度参考B站王利明老师对《GPU虚拟化技术分享》的演讲:https://b23.tv/uQKBpcK GPU 有什么用? GPU可以用于图形渲染,也能够用于高性能计算和编解码等场景。 图:GPU 的典型软件架构(不含虚拟化) …