当前位置: 首页 > news >正文

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);}
}

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

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

本文到这里就结束啦~

相关文章:

JavaEE:文件操作

文章目录 文件操作和IO文件系统操作File介绍属性构造方法方法 代码演示前四个listmkdirrenameTo 文件操作和IO 文件系统操作 创建文件,删除文件,创建目录,重命名… Java中有一个类,可以帮我们完成上述操作. 这个类叫做File类. File介绍 属性 这个表格描述了文件路径的分隔符…...

Python | 练习作业 2

为学生登录系统新增搜索功能。 第二天作业的解题思路: # 1.创建一个空列表保存搜索结果 # 2.让用户输入要搜索的内容 # 3.遍历学生信息,检查学生的id name age gender score # 中的属性值 是否跟用户搜索的内容一致 # 4.如果有一致的属性 那么就将该学生…...

C语言-整数和浮点数在内存中的存储-详解-上

C语言-整数和浮点数在内存中的存储-详解-上 1.前言2.整数2.1无符号整数2.2原码、反码、补码符号位最大值转换过程补码的意义简化算术运算易于转换方便溢出处理 1.前言 在C语言的使用中,需要时刻关注数据的类型,不同类型交替使用可能会发生错误&#xff…...

图论篇--代码随想录算法训练营第六十一天打卡| Floyd 算法,A*算法

Floyd 算法(求多源汇最短路) 题目链接:97. 小明逛公园 题目描述: 小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力&…...

CMake构建学习笔记16-使用VS进行CMake项目的开发

文章目录 1. 概论2. 详论2.1 创建工程2.2 加载工程2.3 配置文件2.4 工程配置2.5 调试执行 3. 项目案例4. 总结 1. 概论 在之前的系列博文中,我们学习了如何构建第三方的依赖库,也学习了如何去组建自己的CMake项目,尤其是学习了CMake的核心配…...

数据结构中线性表的定义和特点

线性表:有n个数据特征相同的元素构成的有限序列。 特点: 除了第一个元素,最后一个元素,其余的元素都有唯一的前驱和唯一的后继。 案例引入: 一元多项式的运算: 可以将一元多项式p(x)抽象为一个有n1个系…...

【PyTorch单点知识】PyTorch中的自动混合精度(AMP)模块详解

文章目录 0. 前言1. 什么是自动混合精度?2. PyTorch AMP 模块3. 如何使用 PyTorch AMP3.1 环境准备3.2 代码实例3.3 代码解析 4. 结论 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果&a…...

数据结构 --- 哈希表

哈希表(Hash Table),也叫散列表,是一种根据关键码值(Key value)而直接进行访问的数据结构。 一、基本原理 哈希函数 哈希表通过一个特定的哈希函数,将关键码映射到表中的一个位置。这个位置通常…...

Linux相关:在阿里云下载centos系统镜像

文章目录 1、镜像站2、下载方式一2.1、第一步打开镜像站地址2.2 下载地址: https://mirrors.aliyun.com/centos/2.3、选择7版本2.4、镜像文件在isos文件夹中2.5、选择合适的版本 3、下载镜像快捷方式 1、镜像站 阿里云镜像站地址 2、下载方式一 2.1、第一步打开镜像站地址 2…...

24. 线模型对象

线模型Line渲染顶点数据 下面代码是把几何体作为线模型Line (opens new window)的参数,你会发现渲染效果是从第一个点开始到最后一个点,依次连成线。 // 线材质对象 const material new THREE.LineBasicMaterial({color: 0xff0000 //线条颜色 }); //…...

EasyExcel 快速入门

目录 一、 EasyExcel简介 官网链接: 代码链接: 二、 EasyExcel快速上手 引入依赖: 设置Excel相关注解 编写对应的监听类: 简单写入数据: 简单读取数据: 不需要使用监听器: 需要使…...

Sparse4D v1

Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion Abstract 基于鸟瞰图 (BEV) 的方法最近在多视图 3D 检测任务方面取得了重大进展。与基于 BEV 的方法相比,基于稀疏的方法在性能上落后,但仍然有很多不可忽略的优点。为了…...

速盾:你知道高防 IP 和高防 CDN 的区别吗?

在当今网络安全形势日益严峻的情况下,网站的安全防护成为了企业和个人关注的焦点。高防 IP 和高防 CDN 作为两种常见的网络安全防护手段,被广泛应用于网站的安全防护中。那么,高防 IP 和高防 CDN 有什么区别呢?防护网站哪个更好呢…...

HTML和CSS网页制作成品

HTML和CSS网页制作成品 一、引言 1. 背景介绍 在当今数字化时代,网页已成为信息传递和交流的重要媒介。HTML和CSS作为网页制作的基石,对于构建美观、功能丰富的网站至关重要。本文将详细介绍如何使用HTML和CSS来制作一个网页成品。 2. 目的和重要性 …...

Ai+若依(集成easyexcel实现excel表格增强)

EasyExcel 介绍 官方地址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一…...

钻机、塔吊等大型工程设备,如何远程维护、实时采集运行数据?

在建筑和工程领域,重型设备的应用不可或缺,无论是在道路与桥梁建设、高层建筑施工,还是在风电、石油等能源项目的开发中,都会用到塔吊、钻机等大型机械工程设备。 随着数字化升级、工业4.0成为行业发展趋势,为了进一步…...

【AutoX.js】选择器 UiSelector - 查找包名

文章目录 原文:https://blog.c12th.cn/archives/38.html选择器 UiSelector - 查找包名笔记直接查找包名双层判断(推荐)查找最外层控件的子控件 最后 原文:https://blog.c12th.cn/archives/38.html 选择器 UiSelector - 查找包名 笔记 AutoX.js UiSelec…...

ERP进销存多仓库管理系统源码 带完整的安装代码包以及搭建部署教程

系统概述 ERP进销存多仓库管理系统是一款专为中小企业量身定制的集成化管理软件,它集成了采购管理、销售管理、库存管理、财务管理以及多仓库协同作业等核心模块。通过统一的平台,企业可以实时掌握商品从入库到出库的全过程,实现库存的自动化…...

数据清洗-缺失值填充-对XGBoost参数优化填充

目录 一、安装所需的python包二、采用XGboost算法进行缺失值填充2.1可直接运行代码2.2以某个缺失值数据进行实战2.2.1 代码运行过程截屏:2.2.2 填充后的数据截屏:三、网格搜索(Grid Search)对 XGBoost 模型的超参数进行优化原理介绍3.1 说明3.2 参数优化的原理1. 网格搜索(…...

Qt_按钮类控件

目录 1、QAbstractButton 2、设置带图标的按钮 3、设置带有快捷键的按钮 4、QRadioButtion(单选按钮) 4.1 QButtonGroup 5、QCheckBox 结语 前言: 按钮类控件是Qt中最重要的控件类型之一,该类型的控件可以通过鼠标的点击…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...