JavaEE-文件IO1

文章目录

  • 一、什么是文件IO?
    • 1.1 IO
    • 1.2 文件
      • 1.2.1 路径
      • 1.2.2 文件分类
  • 二、使用Java针对文件系统进行操作


一、什么是文件IO?

1.1 IO

IO分别代表Input和Output即输入和输出。比如我的电脑可以从网络上下载文件,也可以通过网络上传文件或者我把我的内存中的数据保存到硬盘,将硬盘中的数据读取到内存。以上这些实际上都是文件IO,不过这里肯定有不少同志分不清哪个过程是输入,哪个过程是输出,这其实是人为规则规定的。
在这里插入图片描述
如图,如果说数据是朝cpu方向流动的,那么就是输入,如果说数据是朝cpu相反方向流动的,那么就是输出。

1.2 文件

文件本身也是广义的概念,在操作系统中将很多资源都抽象成文件,此时在这里的文件就是狭义的文件,也就是平时保存在硬盘上的文件。
文件夹是否是文件,事实上文件夹也是文件并被称为目录文件,也是保存在硬盘上。在硬盘上,很多文件和目录构成树形结构,类似于一个N叉树。
在这里插入图片描述

1.2.1 路径

文件非常多,并且目录也非常多,我们需要一种方式来标识某个具体的文件。这样就引出了路径,路径就是从根节点出发一层一层往下走,最终到达目标文件后,中间这些目录集合在一起就构成了路径。
(1)绝对路径
从盘符开头的路径,也称为绝对路径。
(2)相对路径
相对路径的起点可以是任何路径。
路径是使用/或者\来分割目录,但是\分割目录只能在windows操作系统中使用,其它操作系统只支持/分割。
这里还有两个注意点第一个就是./的使用,假如我们启动qq.exe文件,此时路径如下:
在这里插入图片描述
此时工作目录就是D:\QQNT,在此时./就是表示D:\QQNT。对于第二个注意点就是…/的使用,此时…/表示当前目录的上一级目录就是D:\,还是很好理解的。

1.2.2 文件分类

文件存储在硬盘上。文件分类方式有很多种,在这里主要讨论和编码相关的一种分类方式,就是将文件分为二进制文件和文本文件。
其实区分一个文件是文本文件还是二进制文件很简单,就是以记事本打开文件,如果显示乱码就是二进制文件,如果没有乱码以字符显示那么就是文本文件。
日常常见的docx,pdf以及pptx都是二进制文件,因为它们是富文本文件,除了文本还要其它很多信息。mp4,mp3等等都是二进制文件。md,html,java,c都是文本文件。文本文件是给人看的,二进制文件是给程序看的。

二、使用Java针对文件系统进行操作

针对文件系统进行操作包括创建文件,删除文件,创建目录,重命名文件…
Java标准库提供了File类表示一个文件,进一步通过File类对象提供的方法就可以对文件系统进行操作了。File类在java.io这个包中,和输入输出相关的类也在这个包当中。
对于File类的使用是比较简单的,因为就只需要记得一些方法如何使用即可。这里只介绍部分方法的使用细节,要是想了解更多就可以点击这个链接。
注意:构造File对象时,路径不必真实存在。
在这里插入图片描述
代码示例1:

package io;import java.io.File;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {File file = new File("F:/test.txt"); //创建的file类对象的路径中的文件可以存在也可以不存在//使用绝对路径 输出标准看不出差别System.out.println(file.getParent());// F:/System.out.println(file.getPath());// F:/test.txtSystem.out.println(file.getName());// test.txtSystem.out.println(file.getAbsolutePath());// F:/test.txtSystem.out.println(file.getCanonicalPath());// F:/test.txtFile file1 = new File("./test.txt");System.out.println(file1.getParent());// 这里父目录直接草率的取了.System.out.println(file1.getName());// 这里名字还是一样test.txtSystem.out.println(file1.getPath());// 取的是相对路径System.out.println(file1.getAbsolutePath());// 将工作目录和给出的相对路径进行直接拼接// 这里的工作目录就是当前项目所处的工作目录// 如果在命令行界面使用java运行 那么工作目录就是运行时的命令行的路径 例如自己在命令行运行工作目录就是C:\Users\1System.out.println(file1.getCanonicalPath());// 去掉上面绝对路径的那个点 就是更多的对格式进行调整}}

代码示例1运行结果:
在这里插入图片描述
代码示例2:

package io;import java.io.File;
import java.io.IOException;public class Demo2 {public static  void main(String[] args) throws IOException {File file=new File("./test.txt");file.createNewFile();//创建文件 如果文件存在就返回false 如果文件路径不合法就抛出异常System.out.println(file.exists());System.out.println(file.isFile());System.out.println(file.isDirectory());}}

代码示例3:

package io;import java.io.File;
import java.util.Scanner;public class Demo3 {public static void main(String[] args) {File file =new File("./test.txt");Scanner in=new Scanner(System.in);//删除文件//file.delete();//在线程结束时删除文件//在编写word文档时会自动添加一个隐藏文档来记录修改 当叉掉word文档时这个文件就会删除// 这个文档适用于突发状况例如电脑掉电也不会丢失修改内容file.deleteOnExit();in.next();System.out.println(file.exists());}
}

这里有个方法比较特殊,就是deleteOnExit方法,它在程序运行的时候不会删除文件,只会在程序运行结束后删除文件。类似的思想在word中也有展现,在编辑word时会产生一个临时文件如下图,当你完成编辑时,就会将这个临时文件给删除。这里使用这样的设计主要是为了在电源掉电时能够将已经修改的内容给保存下来,这样下次重启word就能继续前面的编辑进度。
在这里插入图片描述
代码示例4:

package io;import java.io.File;public class Demo4 {public static void main(String[] args) {File file=new File("./testDir");// 创建单级目录//file.mkdir(); //创建成功返回true 已经存在创建失败返回falseFile file2=new File("./testDir/aaa/bbb/ccc");// 创建多级目录file2.mkdirs();System.out.println(file.isDirectory());}
}

代码示例5:

package io;import java.io.File;public class Demo5 {public static void main(String[] args) {File file1=new File("./test2.txt");//不仅能可以重命名文件 还可以挪动文件到文件夹下面File file2=new File("./testDir/test2.txt");file1.renameTo(file2);}
}

对于文件系统的操作都是使用File类中的方法进行实现,比较简单。

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

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

相关文章

Vue 离线地图实现

效果图: 一、获取市的地图数据 DataV.geoAtlas 获取市地图数据 点击地图缩放至想要的市区域,通过右侧的链接打开网址,复制json数据。 二、获取镇地图数据 选择你想要的镇数据,点击下载 选择级别(清晰度&#xff09…

mysql存储比特位

一、介绍 二、SQL CREATE TABLE bits_table (id INT PRIMARY KEY AUTO_INCREMENT,bit_value BIGINT UNSIGNED );-- 插入一个 8 位的 BIT 值 INSERT INTO bits_table (bit_value) VALUES (B10101010);-- 查询并格式化输出 SELECT id,bit_value,CONCAT(b, LPAD(BIN(bit_value),…

MGRE实验——路由配置

对134环回 ping一下发现都可以通 配置3,4同3 再注册 然后内网要互通,起rip 宣告1的左边和右边 对3 对4 当3,4之间要互通时,首先在1上 关闭之后,3就能学到4上的用户网段,4也能学到3 局域网要访问广域网一定…

【贪心算法题目】

1. 柠檬水找零 这一个题目是一个比较简单的模拟算法,只需要根据手里的钱进行找零即可,对于贪心的这一点,主要是在20元钱找零的情况下,此时会出现两种情况:10 5 的组合 和 5 5 5 的组合,根据找零的特点&a…

容器监控方案

1、docker部署prometheus Prometheus是一套开源的系统监控报警框架,它基于时序数据库,并通过HTTP协议周期性地从被监控的组件中抓取指标数据。以下是一些关于Prometheus的详细介绍: 基本概念:Prometheus所有采集的监控数据均以指…

“壕无人性”的沙特也要买量子计算机!巨头沙特阿美的合作方竟是它?

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:1200字丨5分钟阅读 摘要:石油巨头沙特阿美与 Pasqal 开启合作,计划于 2025 年部署一台 200 量子比特的量子计算机&#xff…

uniapp星空效果

uniapp星空效果 背景实现思路代码实现尾巴 背景 之前在网上看到过一个视频,使用纯css实现过一个星空效果。具体出处找不到了,我们按照他那个思路来实现一个类似的效果,还是先上一张图镇楼: 实现思路 首先我们这个效果使用的是…

python安装路径可以更改吗

Python3.5默认安装路径是当前用户的 AppData\.. 下 现在安装过程中默认是install just for me,这个会把python默认安装到AppData文件夹中,如果选了install for all users,就会默认安装到C盘根目录了。 python3.5 安装: 输入官网…

【论文速读】|探索ChatGPT在软件安全应用中的局限性

本次分享论文:Exploring the Limits of ChatGPT in Software Security Applications 基本信息 原文作者:Fangzhou Wu, Qingzhao Zhang, Ati Priya Bajaj, Tiffany Bao, Ning Zhang, Ruoyu "Fish" Wang, Chaowei Xiao 作者单位:威…

linux系统硬盘读写慢的排查方法

如果服务器硬盘读写慢,可能会导致处理性能降低,用户响应慢。因此及时排除故障至关重要。下面是硬盘读写慢的排查思路。 1、top命令查看硬盘是否繁忙。 2、找出占用硬盘带宽高的进程。 通过iotop命令进行查看,iotop命令是用于展示硬盘读写操作…

【Linux】:Linux 2.6内核 调度队列和调度原理

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux 2.6内核 调度队列和调度原理,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言&#xff1a…

Mysql超详细安装配置教程(保姆级图文)

MySQL是一种流行的开源关系型数据库管理系统,它广泛用于网站和服务的数据存储和管理。MySQL以其高性能、可靠性和易用性而闻名,是许多Web应用程序的首选数据库解决方案之一。 一、下载安装包 (1)从网盘下载安装文件 点击此处直…

Redis常见数据类型(4) - hash, List

hash 命令小结 命令执行效果时间复杂度hset key field value设置值O(1)hget key field获取值O(1)hdel key field [field...]删除值O(k), k是field个数hlen key计算field个数O(1)hgetall key获取所有的field-valueO(k), k是field的个数hmget field [field...]批量获取field-va…

【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 布局管理器 | 网格布局Grid Layout 文章编号&#xff1a…

Go 切片常用操作与使用技巧

1.什么是切片 在 Go 语言中的切片(slice)是一种灵活的动态数组,它可以自动扩展和收缩,是 Go 语言中非常重要的数据结构之一。切片是基于数组实现的,它的底层是数组,可以理解为对底层数组的抽象。它会生成一…

必应崩了?

目录 今天使用必应发现出现了不能搜索,弹出乱码的情况。 搜了一下,发现其他人也出现了同样的问题。 使用Edge浏览器的话,可以试着改一下DNS,有可能会恢复正常(等官方修复了记得改回来) 使用谷歌浏览器打开…

桂林电子科技大学计算机工程学院、广西北部湾大学计信学院莅临泰迪智能科技参观交流

5月18日,桂林电子科技大学计算机工程学院副院长刘利民、副书记杨美娜、毕业班辅导员黄秀娟、广西北部湾大学计信学院院长助理刘秀平莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技副总经理施兴、广西分公司郑廷和、梁霜、培训业务部孙学镂…

中国医学健康管理数字化发展风向标——专家共话未来趋势

随着科技的飞速发展,数字化已经成为中国医学健康管理领域的重要发展方向。 2024年5月20日由中国管理科学研究院智联网研究所、中国民族医药协会医养教育委员会、国家卫健委基层健康服务站、中国老龄事业发展基金会、中国智联网健康管理系统平台、中国医学健康管理数…

express.js--token中间件验证及token解析(三)

主要作用 访问路由接口时,哪些需要校验token 通过token解析身份信息,就可以知道是哪个人 框架基本搭建express.js--基本用法及路由模块化(一)-CSDN博客 如何生成tokenexpress.js--生成token(二)-CSDN博客 middleware/index.js const jwt require(…

【openlayers系统学习】3.1-3.2彩色GeoTIFF图像渲染

一、彩色GeoTIFF图像渲染 Sentinel-2 卫星任务收集并传播覆盖地球陆地表面的图像,重访频率为 2 至 5 天。传感器收集多波段图像,其中每个波段都是电磁频谱的一部分。 2A 级 (L2A) 产品提供以下频段的表面反射率测量: BandDescriptionCentra…