目录

  • 一、什么是文件
  • 二、Java中操作文件
  • 三、java.io.File类


一、什么是文件

文件是在硬盘上存储数据的一种方式。即数据是在硬盘上进行存储的,但是我们并不会直接去操作硬盘,而是通过文件的方式去访问数据的(操作系统将硬盘上的一些细节进行了封装,可以理解为操作系统通过文件系统来管理硬盘),作为开发者我们只需要了解文件相关的接口即可。

java中写完文件 java文件操作详解_java中写完文件


上图中的NTFS文件系统就是windows上的文件系统,这个文件系统背后一定有固定的格式来组织硬盘上的数据(即规定硬盘上的哪一块哪一块空间存储什么样什么样的数据)。而EXT4是Linux系统上的文件系统。

java中写完文件 java文件操作详解_学习_02

不同的文件系统管理硬盘的方式都是类似的,即都是通过目录 - 文件构成了N叉树的这样一个树形结构。

文件系统上的文件分为两大类:文本文件(存储的是字符,用记事本打开能够开懂)和二进制文件(存储的是二进制的数据,用记事本打开不能看懂)。

二、Java中操作文件

Java中通过java.io.File类来对一个文件(包括目录)进行抽象的描述。io即input输入和output输出,要站在CPU的角度去看待输入输出。通过FIle类创建出来的对象既可以对应到一个真实存在的文件,也可以对应到并不真实存在的文件。

java中写完文件 java文件操作详解_文件系统_03

三、java.io.File类

先来看File类的构造方法

java中写完文件 java文件操作详解_java_04

  • File(File parent, String child):根据父目录 + 孩子文件路径,创建一个新的 File 实例。
  • File(String pathname):根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径。此处参数的字符串是一个路径,此路径既可以是绝对路径也可以是相对路径。
  • File(String parent, String child):根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示。

相关方法如下:

修饰符及返回值类型

方法签名

说明

String

getParaent

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

String

getName

返回 FIle 对象的纯文件名称

String

getPath

返回 File 对象的文件路径

String

getAbsolutePath()

返回 File 对象的绝对路径

String

getCanonicalPath()

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

boolean

isDirectory()

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

boolean

exists()

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

boolean

isFile()

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

boolean

createNewFile()

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

boolean

delete()

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

String[]

list()

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

File[]

listFiles()

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

boolean

mkdir()

创建File 对象代表的目录

boolean

mkdirs()

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

boolean

renameTo(File dest)

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

boolean

canRead()

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

boolean

canWrite()

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

请看举例:

java中写完文件 java文件操作详解_文件操作_05


java中写完文件 java文件操作详解_文件操作_06


示例2:


java中写完文件 java文件操作详解_文件操作_07


java中写完文件 java文件操作详解_文件系统_08


上图中通过

getAbsolutePath()方法

打印出来的目录是按照工作目录 + 当前目录来进行打印的(如果是在idea中运行程序的话,工作目录就是项目所在的目录,如果是在命令行中运行程序的话;工作目录就是命令行当前所在目录;如果程序运行在tomcat中则工作目录是在tomcat下的bin目录;所以工作目录会随着运行方式的不同而发生变化)。
示例三:

java中写完文件 java文件操作详解_学习_09


java中写完文件 java文件操作详解_java_10


示例四:

java中写完文件 java文件操作详解_学习_11


java中写完文件 java文件操作详解_java_12


注意:

createNewFile方法

是有可能抛出异常的,比如写入的路径是一个非法路径,比如我们要创建这个文件但是我们对文件所在的目录没有权限操作。
示例五(删除文件,等到程序运行结束的时候才对文件进行删除而非立即删除):

java中写完文件 java文件操作详解_学习_13


有时候我们会在程序运行的时候需要用到临时文件,等待程序结束的时候再把这个临时文件进行删除。
示例六(创建目录):

java中写完文件 java文件操作详解_java_14


示例七(文件重命名和文件移动操作):

java中写完文件 java文件操作详解_java_15

以上就是对文件系统的操作,都是通过File类来进行实现的。所以我们呢

java中写完文件 java文件操作详解_学习_16