【Java】文件I/O-文件系统操作

news2024/11/23 11:15:21

导读

在文件I/O这一节的知识里,对文件的操作主要分为两大类:

☑️针对文件系统进行的操作

☑️针对文件内容进行的操作

针对文件系统进行的操作主要是对Java中的File类进行操作。这篇文章里,博主就来带大家看看Java中针对文件系统的一些常用操作😼

前置知识

如果还不了解文件路径,博主建议先了解一些关于文件路径的简单知识,🔗链接如下

🔗文件路径-绝对路径与相对路径

操作说明表

下表中列出了常见的针对文件系统的操作,有需要的同学可以自行对照使用⬇️

在表后,博主将对一些重要操作进行代码演示和说明📘由于博主使用的是Mac系统🍎,下面的演示都会基于Mac系统🍎进行

返回类型方法名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的文件是否真实存在
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanisFile判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()根据 File 对象,自动创建一个空文件。成功创建后返回 true
booleandelete()根据 File 对象,删除该文件。成功删除后返回 true
voiddeleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到JVM运行结束时
String[]list()返回File 对象代表的目录下的所有文件名
File[]listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象表示
booleanmkdir()创建File 对象代表的目录
booleanmkdirs()创建 File 对象代表的目录,如果必要,会创建中间目录
booleanrenameTo(File dest())进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

重要操作说明

1、File类的创建

方法名

说明

File(File parent, String child)

根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实例

File(String pathname) 

根据⽂件路径创建⼀个新的 File 实例,路径可以是绝

对路径或者相对路径

File(String parent, String child)

根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实

例,⽗⽬录⽤路径表⽰

我们最常使用第二个方法

File file = new File("/Users/liuwenwen/Desktop/test.txt");

2、文件路径操作 

了解 文件路径-绝对路径与相对路径后,给出下面操作⬇️

返回类型方法名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径

先按照绝对路径的方式来写

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

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/liuwenwen/Desktop//test.txt");
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());

    }
}

 运行结果如下

此时返回的路径都是绝对路径

看不出getAbsolutePath()与getCanonicalPath()的区别

将绝对路径改为相对路径后

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

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

获得的结果是

可以看到此时返回的是相对路径

getAbsolutePath()返回的结果即是当前所在路径(IDE项目路径)+ 相对路径

而getCanonicalPath()返回的则是getAbsolutePath()简化版

3、list()与listFiles()

 · list()

运行下面一段代码

import java.io.File;
import java.util.Arrays;

public class demo3 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop");
        String[] files = file.list();
        System.out.println(files);
        System.out.println(Arrays.toString(files));
    }
}

得到结果是

直接打印数组,得到的是哈希值。因此我们需要用到 Arrays.toString()方法,这样才能打印出我们所要的数组内容

 · listFiles()

运行listFiles()方法

import java.io.File;
import java.util.Arrays;

public class demo3 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop");
        File[] files = file.listFiles();
        System.out.println(Arrays.toString(files));
    }
}

得到结果 

对比

将两组结果进行对比

[杂, .DS_Store, 写作相关, .localized, 女性主义, test.txt, 学习]
[/Users/liuwenwen/Desktop/杂, /Users/liuwenwen/Desktop/.DS_Store, /Users/liuwenwen/Desktop/写作相关, /Users/liuwenwen/Desktop/.localized, /Users/liuwenwen/Desktop/女性主义, /Users/liuwenwen/Desktop/test.txt, /Users/liuwenwen/Desktop/学习]

可以发现,list()获得的是文件名,listFiles()获得的是文件路径名

4、创建目录 

mkdir()

创建目录操作其实就是创建文件夹操作

运行下面代码

import java.io.File;

public class demo4 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop/abc");
        System.out.println(file.mkdir());
    }
}

桌面上多出了abc文件夹,创建目录成功!

mkdirs()

如果要创建多级目录,我们则使用mkdirs()方法

import java.io.File;

public class demo4 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop/aaa/bbb/ccc");
        System.out.println(file.mkdirs());
    }
}

创建结果如图 

 5、重命名

将test.txt文件重命名为test2.txt文件

import java.io.File;

public class demo5 {
    public static void main(String[] args) {
        File srcFile = new File("/Users/liuwenwen/Desktop/test.txt");
        File desFile = new File("/Users/liuwenwen/Desktop/test2.txt");
        System.out.println(srcFile.renameTo(desFile));
    }
}

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

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

相关文章

Vue3水印(Watermark)

APIs 参数说明类型默认值必传width水印的宽度,默认值为 content 自身的宽度numberundefinedfalseheight水印的高度,默认值为 content 自身的高度numberundefinedfalserotate水印绘制时,旋转的角度,单位 number-22falsezIndex追加…

利用数据库的表,生成word文档的表结构注释说明

文章目录 1.场景说明2.解决办法3.生成文档3.1.实现思路3.2.引入Apache POI依赖3.3.获取表及表字段说明Mapper3.4.POI创建文档表格,并填充数据3.5.完整的接口下载代码3.6.效果展示 1.场景说明 在项目中表已经建立好了,但是现在想对外提供一个表的字段的描…

获得文件MD5——校验完整性 window 和 Linux下操作

目录 引出window下获得文件MD5Linux下获得文件MD5单个文件整个目录下所有文件检查MD5 总结 引出 1.Windows 10 自带了一个命令行程序 certutil可以 获取文件的 MD5 值; 2.Linux下md5sum命令获得文件MD5值; window下获得文件MD5 Windows 10 自带了一个命…

python中的简单线性拟合

简单线性回归可以拟合线性关系的数据,一般使用一次函数或二次函数即可。 import numpy as np import matplotlib.pyplot as pltxnp.array([1,2,3,4,5,6,7,8,9,10]) ynp.array([2.5,4.5,4.8,5.5,6.0,7.0,7.8,8.0,9.0,10.0])#一次拟合函数 slope,interceptnp.polyfit…

vs2019 - MFC对话框程序的工程名称不支持下划线命名法

文章目录 vs2019 - MFC对话框程序的工程名称不支持下划线命名法概述笔记备注END vs2019 - MFC对话框程序的工程名称不支持下划线命名法 概述 正在写账单分析程序, 用MFC 对话框. 因为比较习惯下划线命名法, 就在向导中给工程名称起了一个my_test这样的名称(下划线命名法, 小…

亮相史上规模最大高交会,Coremail展现邮件技术创新实力

11月19日,第二十五届中国国际高新技术成果交易会在深圳落下帷幕,作为国内邮件行业引领者,Coremail受邀参展。 展览现场,Coremail邮件解决方案及系列产品受到了众多参观者与业内人士的关注与好评。Coremail XT6邮件系统技术成熟&a…

iOS-打包上架构建版本一直不出现/正在处理/自动消失

iOS开发过程中,打包上架苹果审核是一个不可或缺的环节。说实话,这个问题我遇见两次了,为了让自己长点记性,决定写下来。首先,列举几种情况: 1.iPa包上传至App store后,一个小时内不显示构建版本…

使用Prometheus监控Synology(群辉)

1、简介 在现代的IT环境中,对于服务器和网络设备的监控是至关重要的。Synology(群辉)作为一种流行的网络存储解决方案,为用户提供了高性能和可靠的存储服务。然而,了解Synology设备的运行状况和性能指标对于确保其正常…

Nodejs+Vue校园餐厅外卖订餐点餐系统 PHP高校食堂 微信小程序_0u4hl 多商家

对于校园订餐小程序将是又一个传统管理到智能化信息管理的改革,对于传统的校园订餐管理,所包括的信息内容比较多,对于用户想要对这些数据进行管理维护需要花费很大的时间信息,而且对于数据的存储比较麻烦,想要查找某一…

为品质加冕 | 喜尔康智家再次斩获大奖

近日,被誉为“家居质量界奥斯卡”的2023年度沸腾质量奖颁奖盛典在福建厦门第三届家居质量大会同期隆重举行。现场重磅揭晓2023年沸腾质量奖测评获奖结果。 今年,喜尔康智能家居再接再厉,从数百家参评企业中脱颖而出,参评的智能坐便…

一起学docker系列之十三使用Dockerfile构建带有Java 8、Vim和Ifconfig功能的CentOS镜像

目录 1 前言2 构建流程3 Dockerfile说明4 解释Dockerfile5 构建Docker镜像6 运行Docker容器7 总结8 参考地址 1 前言 Docker是一个强大的工具,可以创建一致、可移植和隔离的环境。在本指南中,我们将介绍如何创建一个基于CentOS的Docker镜像,…

基于FPGA的五子棋游戏设计

基于FPGA的五子棋游戏设计 本文基于FPGA设计五子棋游戏,使用按键输入,使用VGA接口输出。五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为1010,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮…

使用docker-compose优雅部署rocketMQ

使用docker-compose优雅部署RocketMQ 随着市场的发展,越来越多的复杂场景出现在我们日常的开发工作中。随之也越来越多的好的工具,也同步出现在程序员的学习范围清单内。好的工具提高产品性能的同时,也带来了很多安装上的问题,do…

31.0/LinkedList/Set/ashSet/ TreeSet/Map/ HashMap/ TreeMap

目录 31.1Linkedlist 31.2Set集合 31.3HashSet集合 31.4添加元素 31.5删除 31.6hashSet的遍历 31.7hashSet的源码 31.8TreeSet集合。 31.1Linkedlist 1.凡是查询源码 ,我们都是从类的构造方法入手:/*** Constructs an empty list.*/public LinkedList() {}该…

figma 基础使用——准备阶段

1. 注册账号 2. figma有客户端也有网页端,使用注意同步字体 之后点击下载window installeer 字体 3. 安装 Figma汉化包 通过figma.cool 网站,下载离线的汉化包 之后通过谷歌的扩展程序添加

vulnhub靶机gigachad_vh

下载地址:Gigachad: 1 ~ VulnHub 主机发现 目标166 端口扫描 端口服务扫描 漏洞扫描 这玩意多得离谱 于是我用a重新扫了一遍 先去看web (⊙﹏⊙)离谱,目录扫描(之前先去看一下nmap扫到的html) 后面扫描的目录奇多,而…

C# 实现微信退款及对帐

目录 需求 基础准备 关键代码 操作界面 ​编辑 退款订单类及方法 退款功能实现 对帐 支付商家后台相关要点 实时交易帐单查询 精确交易帐单查询 小结 需求 在招聘报名系统里,考务费支付是其中一个环节,支付方式很多种,比如银联、…

救命,不会还有体制内姐妹不知道这个神器吧

体制内,每天各种写材料啊啊啊!!!什么用词、结构、形式都要严谨, 有时候憋不出话来说,真的太难了,谁懂啊!!!!! 这个好东西真的救我大…

软工2021上下午第六题(组合模式)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单中包含的可能是一个菜单项(直接对应某个功能),也可…

大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)

本期文章,我们将通过三个动手实验从浅到深地解读和演示大语言模型(LLMs),如何结合 Amazon SageMaker 的模型部署、模型编译优化、模型分布式训练等。 实验一:使用 Amazon SageMaker 构建基于开源 GPT-J 模型的对话机器…