当前位置: 首页 > news >正文

【Java ee 初阶】文件操作和IO(上)

一、文件

文件在计算机中,是保存到“硬盘”上的。操作系统,把硬盘操作进行了抽象封装,使得编程的时候,是不会直接操作硬盘的,而是通过“文件”的概念来进行间接操作。

文件有哪些操作?——>打开文件,关闭文件,读文件,写文件......

通过前面的学习我们可以知道,cpu包括存储器、输入设备、输出设备,其中存储器包含内存和硬盘,软盘、光盘、U盘也属于存储器。

磁盘上的盘片是存储数据的介质,可以快速旋转,磁盘上还有磁头,磁头可以读取文件。

通过文件资源管理器来管理所有文件。

文件的路径

如图所示,通过类似于“树形结构”来管理所有的文件。这是一个N叉树的结构。

而我们又通过“文件路径”的概念,来描述一个文件的位置,从根节点一致到该文件,过程中遇到的每一个目录集合。

同一个机器上,文件路径得是唯一的。

例如:这个文件的路径,就是 D:\qq\MobileFile\Image

通过观察可以知道,文件路径中的每一级目录,都是用 \ 来分割的。其实 \ 这个设定,是windows独有的设定。其他的操作系统,例如Linux,MacOS,Android...都是使用 / ,windows也支持 /。

以上这种以盘符开头的路径,也被称为“绝对路径”,和绝对路径并列,还有一种表示方式,“相对路径”。通常是以 . 或者 .. 开头的路径,比如 .\Image。谈到相对路径,一定要明确,相对路径的“参考系”是什么,相对那个目录(以哪个目录为起点)来进行“相对”的。

而“那个目录”也就是工作目录/基准目录。

定位到同一个文件,如果基准路径不一样,那么相对路径也是不同的。

例如

.\Image 的基准目录,也就是 D:\qq\MobileFile

D:\qq ——>.\MobileFile\Image

D:\qq\MobileFile\Image\新建文件夹 ——> ..\Image【..表示当前路径的上级目录】

D:\qq\MobileFile\Image\新建文件夹\新建文件夹 ——>..\..\Image

小结:基准路径 拼接上 相对路径 =>绝对路径

实际开发中,绝对路径和相对路径,都会经常用到(尤其是相对路径,用的更多一些)

文件的种类

所有的文件,可以分成两个大类:

(1)文本文件 文本文件 存的都是字符串,都是“合法的字符”

*什么是合法的字符?——>文件看他是哪种 编码,如果是utf8 编码的话,意味着文件中的任何一个字符都是utf8,是码表中的合法字符。

*在计算机中,一个汉字占用几个字节?——>答案是不确定。因为计算机中表示汉字都是通过编码来表示的。ascii通过数字,表示英文字母/标点符号/阿拉伯数字。而我们引用更大的码表来表示汉字。

1.gbk 2个字节表示一个汉字(windows简体中文版本,默认就是gbk ,VS的默认编码是跟随系统的)

2.utf-8 【主流】,utf8是边长编码,2-4个字节。大部分的汉字都是3个字节表示。

3.java中,一个char用到utf16,也就是2两个字节表示一个汉字。String又通常会转化成utf8的形式。(内部编码转换的过程,使用的过程中是感知不到的)

(2)二进制文件 二进制文件存什么都可以

如何简单判断一个文件是二进制文件还是文本文件?——>简单的方法判断文件时把这个文件使用notepad打开查看是否乱码。

文本文件/二进制文件,在编写代码的时候,是有差别的。

查看字符编码(UTF-8)

java进行文件操作

1.文件系统操作

包含创建文件,删除文件,移动文件,获取文件属性......

File类

方法签名

说明

File(File parent, String child)

根据父目录(File类型) + 孩子文件路径(String类型),创建一个新的File实例

File(String pathname)

根据文件路径(String类型)创建一个新的File实例,路径可以是绝对路径或者相对路径

File(String parent, String child)

根据父目录路径(String类型) + 孩子文件路径(String类型),创建一个新的File实例,父目录用路径表示

构造File类对象,核心就是指定“路径”,这里的路径,可以是绝对路径,也可以是相对路径。

如果是根据绝对路径进行创建:

利用相对路径来创建一个文件对象

对于Trae着一些的开发工具来说,基准路径可以在运行中看见

如果使用IDEA,也是类似,也是有“终端”的概念,也能看到基准路径是什么

方法:

修饰符及返回值类型

方法签名

说明

String

getParent()

返回 File 对象的父目录文件路径

String

getName()

返回 File 对象的纯文件名称

String

getPath()

返回 File 对象的文件路径

String

getAbsolutePath()

返回 File 对象的绝对路径

String

getCanonicalPath()

返回 File 对象的修饰过的绝对路径

boolean

exists()

判断 File 对象描述的文件是否真实存在

boolean

isDirectory()

判断 File 对象代表的文件是否是一个目录

boolean

isFile()

判断 File 对象代表的文件是否是一个普通文件

boolean

createNewFile()

根据 File 对象,自动创建一个空文件。成功创建后返回 true

boolean

delete()

根据 File 对象,删除该文件。成功删除后返回 true

void

deleteOnExit()

根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时才会进行

String[]

list()

返回 File 对象代表的目录下的所有文件名

File[]

listFiles()

返回 File 对象代表的目录下的所有文件,以 File 对象表示

boolean

mkdir()

创建 File 对象代表的目录

boolean

mkdirs()

创建 File 对象代表的目录,如果必要,会创建中间目录

boolean

renameTo(File dest)

进行文件改名,也可以视为我们平时的剪切、粘贴操作

boolean

canRead()

判断用户是否对文件有可读权限

boolean

canWrite()

判断用户是否对文件有可写权限

IO异常:输入输出过程中出现异常了

PS  全程Power Shell :windows上的终端名字

import java.io.File;
import java.io.IOException;
import java.util.Scanner;public class demo {public static void main(String[] args) throws IOException {File file = new File("d:/test.txt");//创建一个文件file.createNewFile();System.out.println("创建文件成功");//删除一个文件//只有当进程全部结束的时候,文件才会被删除file.deleteOnExit();System.out.println("删除文件成功");Scanner scanner = new Scanner(System.in);System.out.println("请输入一个数字:");int num = scanner.nextInt();}
}

2.文件内容操作

包含 读文件,写文件...

——TBC——

相关文章:

  • 企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析
  • COLT_CMDB_linux_userInfo_20250508.sh修复历史脚本输出指标信息中userName与输出信息不一致问题
  • 解构语言模型推理过程,超越最终答案:通过分析子思考路径提升大语言模型推理准确性的方法研究
  • Python3正则表达式:字符串魔法师的指南[特殊字符]‍♂️
  • 《Scala基础》
  • flink超时未揽收单量统计
  • 华为首款鸿蒙电脑正式亮相,开启国产操作系统新篇章
  • 多线程初阶(2)
  • 长难句。。
  • Kafka消息队列之 【消费者分组】 详解
  • maven 安装 本地 jar
  • 紫禁城多语言海外投资理财返利源码带前端uniapp纯工程文件
  • 带你玩转 Flink TumblingWindow:从理论到代码的深度探索
  • DMC-1410/1411/1417USER MANUAL 手侧
  • 视频编解码学习8之视频历史
  • 艾体宝方案丨深度解析生成式 AI 安全风险,Lepide 为数据安全护航
  • 垃圾回收的三色标记算法
  • Petalinux开发Linux
  • 最新CDGP单选题(第四章)补充
  • fastjson2 json.tojsonstring 会自动忽略过滤掉 key: null的数据
  • 美英达成贸易协议,美股集体收涨
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 两部门发布外汇领域行刑反向衔接案例,织密金融安全“防护网”
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围
  • 李云泽:将加快出台与房地产发展新模式相适配的系列融资制度