JavaEE:文件操作

文章目录

  • 文件操作和IO
    • 文件系统操作
      • File介绍
        • 属性
        • 构造方法
        • 方法
      • 代码演示
        • 前四个
        • list
        • mkdir
        • renameTo


文件操作和IO

文件系统操作

创建文件,删除文件,创建目录,重命名…
Java中有一个类,可以帮我们完成上述操作.
这个类叫做File类.

File介绍

属性

在这里插入图片描述
这个表格描述了文件路径的分隔符,由于这个分隔符在不同的系统上是不一样的.我们就可以通过上面的属性来做到平台无关化.

构造方法

在这里插入图片描述
在这些构造方法中,我们主要来谈第二个版本File(String pathname),使用String作为路径,我们可以往里面传入绝对路径,也可以传入相对路径.也可以指定一个不存在的路径.如果传入的是一个不存在的路径,那么后续对该路径执行的操作(如创建文件或目录)会创建一个新的文件或目录。

方法

下面列出了一系列关于File的操作.
在这里插入图片描述
在这里插入图片描述

  • getParent()可以返回File对象的父目录文件路径.
    在这里插入图片描述

  • getName()可以返回纯文件名称,也就是demo.txt

  • getPath()可以返回对象的文件路径.也就是C:\test\demo.txt

  • getAbsolutePath() 可以返回 File 对象的绝对路径

  • getCanonicalPath() 可以返回 File 对象的修饰过的绝对路径

  • exists()可以判断 File 对象描述的文件是否存在.

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

  • isFile()判断 File 对象代表的文件是否是一个普通文件.

    需要注意的是,在计算机的视角下目录(文件夹)也是文件.

  • createNewFile()顾名思义,创建一个文件

  • delete()根据 File 对象,删除该文件,删除成功后返回true

  • deleteOnExit()这个删除比较特殊,它不是立即删除,而是等到程序执行结束,才删除.(稍后删除)

  • list()针对目录,返回File对象代表的目录下的所有文件名.

  • listFiles()针对目录,返回File对象代表的目录下的所有文件,以File对象表示.(相比于上一个,这个用的比较多)

  • mkdir()创建目录,只能创建一级目录.

  • mkdirs()可以递归的创建多级目录.

    mkdir()的时候,如果中间目录不存在,则无法创建成功;mkdirs()可以解决这个问题

  • renameTo(File dest)重命名也可以视为我们平时的剪切、粘贴操作.

  • canRead()判断用户是否对文件有读权限

  • canWrite()判断用户是否对文件有写权限

代码演示

前四个
package javaEE.fileIO;import java.io.File;
import java.io.IOException;public class D {public static void main(String[] args) throws IOException {// 由于Windows默认使用反斜杠(\)来作为文件路径的分隔符// 一定要使用双反斜杠来表示 \\ // 我们也可以使用/来作为文件路径的分隔符,Windows也支持.File file = new File("C:\\test\\demo.txt");System.out.println(file.getParent());// 打印File对象的父目录文件路径.System.out.println(file.getName());// 打印纯文件名称System.out.println(file.getPath());// 打印对象的文件路径System.out.println(file.getAbsolutePath());// 打印File对象的绝对路径// getCanonicalPath这个会抛出IOException异常System.out.println(file.getCanonicalPath());// 打印File对象的修饰过的绝对路径}
}

在这里插入图片描述
此时我们发现,后三个打印出来的路径一样.
这是咋回事呢?
这主要是因为我们针对File对象进行构造的时候,就是拿绝对路径进行构造的.
File file = new File("C:\\test\\demo.txt");
如果你是绝对路径构造的,那么getPath()得到的就是绝对路径,getAbsolutePath()得到的也是绝对路径,getCanonicalPath()得到的还是绝对路径.

我们把代码中的绝对路径改成相对路径,再次运行一下.

package javaEE.fileIO;import java.io.File;
import java.io.IOException;public class D {public static void main(String[] args) throws IOException {// 由于Windows默认使用反斜杠(\)来作为文件路径的分隔符// 一定要使用双反斜杠来表示 \\ . 我们也可以使用/来作为文件路径的分隔符,Windows也支持.File file = new File("./demo.txt");System.out.println(file.getParent());// 打印File对象的父目录文件路径.System.out.println(file.getName());// 打印纯文件名称System.out.println(file.getPath());// 打印对象的文件路径System.out.println(file.getAbsolutePath());// 打印File对象的绝对路径// getCanonicalPath这个会抛出IOException异常System.out.println(file.getCanonicalPath());// 打印File对象的修饰过的绝对路径}
}

在这里插入图片描述

我们都知道使用相对路径时,需要指定一个基准路径.那么以下代码的基准路径是谁呢?
java File file = new File("./demo.txt");
当我们通过IDEA运行程序时,基准路径就是idea打开的这个项目所在的路径.

把代码和运行结果放到一起对照一下,更容易看出区别.
在这里插入图片描述

关于IOException异常的触发情况:

  1. 硬盘空间不够
  2. 没有权限
list
package javaEE.fileIO;import java.io.File;
import java.util.Arrays;public class E {public static void main(String[] args) {File file = new File(".");// 打印当前目录下所包含的内容System.out.println(Arrays.toString(file.list()));}
}

当前目录
在这里插入图片描述

运行结果
在这里插入图片描述

直接使用list/listFiles只能看到当前目录中的内容.
如果想看到某个目录下,所有的目录和文件,就需要递归来完成.

package javaEE.fileIO;import java.io.File;public class F {public static void main(String[] args) {File file = new File(".");scan(file);}private static void scan(File currentDir) {// 判断当前文件是不是目录if(!currentDir.isDirectory()) {// 不是目录,直接返回return;}// 列出目录中包含的内容File[] files = currentDir.listFiles();// 判断目录是否为空if(files == null || files.length == 0) {// 为空,直接返回return;}// 打印当前文件路径System.out.println(currentDir.getAbsolutePath());// 遍历整个目录for (File file:files) {if(!file.isDirectory()) {// 不是目录,打印出绝对路径System.out.println(file.getAbsolutePath());} else {//是目录,继续递归scan(file);}}}
}

运行结果
在这里插入图片描述

mkdir
package javaEE.fileIO;import java.io.File;public class G {public static void main(String[] args) {File f = new File("./abc");boolean ok = f.mkdir();System.out.println(ok);}
}

在这里插入图片描述

renameTo

renameTo改名.

package javaEE.fileIO;import java.io.File;public class H {public static void main(String[] args) {File srcFile = new File("./abc");File destFile = new File("./abc1234");boolean ok = srcFile.renameTo(destFile);System.out.println(ok);}
}

可以看到abc成功改名了.
在这里插入图片描述
renameTo还可以用来移动文件,跟剪切的作用很像.

package javaEE.fileIO;import java.io.File;public class I {public static void main(String[] args) {// 将def这个文件从abc1234文件夹中,移动到当前文件夹中File srcFile = new File("./abc1234/def");File destFile = new File("./def");boolean ok = srcFile.renameTo(destFile);System.out.println(ok);}
}

移动文件,就是修改文件所在的路径,文件路径的修改,也可以视为是一种"重命名".

没有演示的方法都十分简单,这里就不再赘述了~

本文到这里就结束啦~

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

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

相关文章

应急响应实战---是谁修改了我的密码?

前言:此次应急响应为真实案例,客户反馈无法通过密码登录服务器,疑似服务器被入侵 0x01 如何找回密码? 客户服务器为windows server2019,运维平台为PVE平台;实际上无论是windows系统或者是linux系统&#…

个人学习笔记7-5:动手学深度学习pytorch版-李沐

#人工智能# #深度学习# #语义分割# #计算机视觉# #神经网络# 计算机视觉 13.10 转置卷积 例如,卷积层和汇聚层,通常会减少下采样输入图像的空间维度(高和宽)。然而如果输入和输出图像的空间维度相同,在以像素级分类…

【物联网技术大作业】设计一个智能家居的应用场景

前言: 本人的物联网技术的期末大作业,希望对你有帮助。 目录 大作业设计题 (1)智能家居的概述。 (2)介绍智能家居应用。要求至少5个方面的应用,包括每个应用所采用的设备,性能&am…

2023级JavaScript与jQuery

第三课:JavaScript对象编程 一.预习笔记 1.Date对象 对象创建:var myDatenew Date() 输出显示当前日期的标准时间 对象创建:var myDatenew Date(“2024/09/14”) 对象创建:var myDatenew Date(2024,9,14) 当前对象创建时&…

TiDB从0到1学习笔记(精华篇)

历时四个月,恭喜赵老师的《TiDB从0到1》 系列文章顺利完结,小编再次梳理一遍文稿,并附注解分享给大家。 整体架构 从 TiDB 1.0 到 8.0,TiDB 的体系结构一直在不断演进。接下来让我们一起看看整体架构的变化。 TiDB v1 TiDB v1&…

Windows 环境下 vscode 配置 C/C++ 环境

vscode Visual Studio Code(简称 VSCode)是一个由微软开发的免费、开源的代码编辑器。它支持多种编程语言,并提供了代码高亮、智能代码补全、代码重构、调试等功能,非常适合开发者使用。VSCode 通过安装扩展(Extension…

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignNa…

【LabVIEW学习篇 - 24】:生产者/消费者设计模式

文章目录 生产者/消费者设计模式案例:控制LED等亮灭 生产者/消费者设计模式 生产者/消费者是多线程编程中最基本的一种模式,使用非常普遍。从软件角度看,生产者就是数据的提供方,而消费者就是数据的消费处理方,二者之…

微信小程序开发——比较两个数字大小

在这里我们使用的工具是 需要自行安装和配置。 在微信小程序中比较两个数字大小有以下几种方式: 一、普通条件判断 在小程序的.js 文件中,先定义两个数字,如let num1 5; let num2 3;。通过if - else if - else语句,根据num1与…

文件管理系统DCC与泛微OA系统集成案例

一、项目背景 上海某半导体有限公司主要产品应用于图像传感器、 图像信号处理芯片、 低功耗芯片、 射频芯片等。 公司内部有DCC文件管理系统和OA系统,由SAP PO平台进行中间管理,DCC系统对接泛微OA系统推送文件等操作,提高公司内部各自系统…

智能智造和工业软件研发平台SCSAI功能介绍

用爱编程30年,倾心打造工业和智能智造软件研发平台SCIOT,用创新的方案、大幅的让利和极致的营销,致力于为10000家的中小企业实现数字化转型,打造数字化企业和智能工厂,点击上边蓝色字体,关注“AI智造AI编程”或文末扫码…

lightdm , xrandr , startx 桌面管理器,窗口管理器

问题: 了解这几个的含义。 显示服务器 这个不是很明白 显示管理器, 知道就行了,也不是很明白。 窗口管理器。 桌面管理器。 这个其实就是 桌面环境了, 我们的板卡上使用的是xface 。 这个 xface 是一个集合,这里面…

亚马逊IP关联及其解决方案

在电子商务领域,亚马逊作为全球领先的在线购物平台,吸引了众多商家和个人的参与。然而,随着业务规模的扩大,商家在使用亚马逊服务时可能会遇到IP关联的问题,这不仅影响账户的正常运营,还可能带来一系列不利…

基于SpringBoot+Vue的个性化视频推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

ComfyUI安装节点过程中被降低了版本的软件包重新安装

最近在安装2个没怎么及时更新节点时,安装节点依赖性过程中,将原高版本的软件包,给降到了低版本,解决的办法就是:1、再次删除软件包,2、指定版本号重新安装回高版本软件包。

Centos7.9部署Gitlab-ce-16.9

一、环境信息 软件/系统名称版本下载地址备注Centos77.9.2009https://mirrors.nju.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.isogitlab-cegitlab-ce-16.9.1https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.9.1-ce.0.el7.x86_64.rpm…

使用Azure Devops Pipeline将Docker应用部署到你的Raspberry Pi上

文章目录 1. 添加树莓派到 Agent Pool1.1 添加pool1.2 添加agent 2. 将树莓派添加到 Deployment Pool2.1 添加pool2.2 添加target 3. 添加编译流水线3.1 添加编译命令3.2 配置触发器 4. 添加发布流水线4.1 添加命令行4.2 配置artifact和触发器 5. 完成 1. 添加树莓派到 Agent P…

从基础到进阶:利用EasyCVR安防视频汇聚平台实现高效视频监控系统的五步走

随着科技的飞速发展,视频监控技术在社会安全、企业管理、智慧城市构建等领域扮演着越来越重要的角色。一个高效智能的视频监控管理系统不仅能够提升监控效率,还能在预防犯罪、事故预警、数据分析等方面发挥巨大作用。 一、需求分析 在设计视频监控管理…

如何自学SQL(从入门到精通)?

SQL语言对于各个数据库是通用的,学习SQL数据库语言是一个系统的过程,可以分为几个阶段:入门、进阶、实践和精通。 下面是一些建议,可以帮助你从入门到精通自学SQL: 1. 学习方法 a. 理解基本概念 数据库理论&#xf…

rk3568 parameter.txt 添加自己的分区,或者去掉已有的分区

问题: 客户在 之前的核心板上 可以烧写自己的镜像,但是在最新的核心板上却烧写不上,新旧核心板 只是变了emmc , 由 江波龙 ------->星火。 分析: 客户的镜像的分区是经过自己的定制的,所以有可能 是 由…