【JavaEE初阶】文件操作——IO

2023-10-16 14:53:44 浏览数 (1)

文件

文件:File这个概念,在计算机里也是一次多用: 狭义的文件:指的是硬盘上的文件和目录。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。 广义的文件:泛指计算机中的很多的软硬件资源.

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

文件路径(Path)

每个文件,在硬盘上都有一个具体的路径。

例如:上述照片的路径就是:E:/rocket.jpg 表示一个文件的具体位置路径,就可以使用 / 来分割不同的目录级别。

就可以表示为:E:tmp111aaa

在Windows中/都可以来做分隔符。但是在平常的代码中更建议使用/,因为/不存在字符转义问题。

在路径这里,有两种表示路径的风格。

  1. 绝对路径,以c: d: 盘符开头的路径
  2. 相对路径,以当前所在的目录为基准,以.或者..开头(有时可以省略),找到指定的路径

当前所在目录:称为工作目录,每个程序运行的时候,都有一个工作目录。

定位到111这个目录,是E:/tmp 如果工作目录不同,定位到同一个文件,相对路径写法是不同的: 例如:定位到111 如果工作目录是E:/ 相对路径写作:./tmp/111 如果工作目录是E:/tmp 相对路径写作:./111 如果工作目录是E:/tmp/222 相对路径写作:../111 如果工作目录是E:/tmp/222/bbb 相对路径写作:../../111

..表示上一级路径

文件的类型

文件的类型有很多种,比如:word,exe,图片,视频,pdf,源代码,动态库等。这些文件可以归纳到两类中:

  1. 文本文件(存的是文本,字符串) 字符串,是由字符构成的,每个字符,都是通过一个数字来表示的。这个文本文件里存的数据,一定是合法的字符,都是指定字符编码的码表之内的数据。
  2. 二进制文件(存的是二进制,不一定是字符串) 没有任何限制

如何判断一个文件是二进制还是文本文件? 使用记事本打开,如果乱码就是二进制文件;如果没有乱码,就是文本。

Java中操作文件

主要分为两类:

  1. 针对文件系统操作。(文件的创建,删除,重命名)
  2. 针对文件内容操作。(文件的读和写)

Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不 代表真实存在该文件。

File概述

常见属性

修饰符及类型

属性

说明

static String

pathSeparator

依赖于系统的路径分隔符,String 类型的表示

static char

pathSeparator

依赖于系统的路径分隔符,char 类型的表示

pathSeparator(File中的一个静态变量)就是/或者跟着系统走。

构造方法

签名

说明

File(File parent, Stringchild)

根据父目录 孩子文件路径,创建一个新的 File 实例

File(String pathname)

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

File(String parent, Stringchild)

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

方法

修饰符及返回值类型

方法签名

说明

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(Filedest)

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

boolean

canRead()

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

boolean

canWrite()

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

方法演示:

注意:

代码语言:javascript复制
File file = new File("./test.txt");

中不要求E:/这里真的有test.txt 如果想要可以自己手动创建:

代码语言:javascript复制
throws IOException

这个异常在IO中是特别容易出现的异常。

deleteOnFile()程序退出的时候,自动删除。(打开一个word文档,就会在同级目录下生成出一个临时文件,关闭word,这个文件就没有了)

这个临时文件,相当于保存了当前实时编辑的内容,防止编辑了很多东西之后突然停电,导致数据丢失。这种临时数据就使用deleteOnExit的方式来删除。

文件内容的读写——数据流

什么叫做流呢?

举个

0 人点赞