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

发布于:2025-05-10 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、文件

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

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

通过前面的学习我们可以知道,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——


网站公告

今日签到

点亮在社区的每一天
去签到