认识Java文件操作和IO流

news2025/1/23 22:39:17

文件操作(一)

文章目录

  • 文件操作(一)
    • 文件的特性
    • 路径
    • 文件分类
    • File类的使用
      • 文件的创建
      • 文件的删除
      • 文件创建加目录创建
      • 列出当前文件夹包含的文件
      • 文件重命名函数

文件的特性

我们所说的文件一般指的是硬盘文件,其实文件不止硬盘文件这一种文件,还有其他特殊文件。

说到文件就会不可避免谈到缓存速度,电脑的存储模块主要以寄存器,内存和外存(硬盘)为主,他们三者的比较

存储速度:寄存器 > 内存 >外存

空间: 外存 >内存 > 寄存器

价格:寄存器 > 内存 >外存

一般的文件操作都是针对于硬盘,也就是外存,比如说我们常用的数据库MySQL也是对硬盘的操作,还有文件IO操作也是对硬盘的操作。

路径

路径也被称为‘目录’,从上到下呈现为图/树形结构(N叉树),文件路径是由根节点出发,一路到达目标文件位置中途经过的内容。

相对路径:从某个特定的目录出发,一层一层向下找直到目标文件

绝对路径:从盘符(电脑的盘)开始,一级一级向下直到找到目标文件

使用.表示当前目录,使用..表示上一级目录。这里的路径查找文件针对于window系统。

文件分类

文本文件

  • 文本文件主要存储的是ASCII码表中的字符,或者是utf-8中的字符,或者是Unicode中的字符

二进制文件

  • 二进制文件存储的就是二进制编码,是使用二进制表示的字符,没有任何的字符集限制

如何知道一个文件是文本文件还是二进制文件呢?这里有一个小技巧给大家分享,把你想要识别的文件使用记事本打开,如果其中内容你可以识别,则是文本文件,否则就是二进制文件了。

File类的使用

使用Java代码操作文件,就会使用到Java中的File类,利用对象来操作内存中的文件,修改文件或者创建文件。

文件的创建

使用方法:

在这里插入图片描述

可以看到一般是使用路径对文件的创建。

//在当前目录下找一个hello.txt的文件,这个文件可以存在也可以不存在
File f = new File("\\hello.txt");
//当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 
f.createNewFile();

可以发现该类使用了IO的包。I/O -->input/output,也就是执行输入输出操作的包。

来认识几个File获取路径的方法:

方法名返回值方法描述
getParent()String获取上级目录
getName()String获取文件名
getPath()String获取路径名
getAbsolutePath()String获取绝对路径名
getCanonicalPath()String获取规范路径名
public static void main(String[] args) throws IOException {
        File f = new File("\\hello.txt");
        System.out.println(f.getParent());//获取上级目录
        System.out.println(f.getName());//获取文件名
        System.out.println(f.getPath());//将此抽象路径名转换为路径名字符串
        System.out.println(f.getAbsolutePath());//返回此抽象路径名的绝对路径名字符串。
        System.out.println(f.getCanonicalPath());//返回此
 }

在这里插入图片描述

判断文件特性,返回值(Boolean):

方法名方法描述
exists()判断路径名表示的文件或目录是否存在
isDirectory()判断当前输入的是否为目录
isFile()判断是否是普通文件
public static void main(String[] args) throws IOException {
    //表示相对路径
    File file = new File("hello_world.txt");
    //file.createNewFile();
    //创建文件,会根据文件目录来进行创建
    System.out.println(file.exists());
    System.out.println(file.isDirectory());
    System.out.println(file.isFile());
    
}

在这里插入图片描述

可以使用创建文件,然后再运行程序。

在这里插入图片描述

文件的删除

file.delete();//直接调用delete()方法即可

使用exist()来看出文件存在与否。

在这里插入图片描述

文件创建加目录创建

首先需要认识两个方法:

方法名方法描述
mkdir()创建以该抽象路径命名的目录
mkdirs()创建以该抽象路径,名命名的目录,包括任何必需但不存在的父目录。

使用效果:

public static void main(String[] args) {
    //创建单层目录
    File file1 = new File("a");
    file1.mkdir();
    System.out.println(file1.exists());
    //创建多级目录
    File file = new File("aaa/bbb");
    file.mkdirs();
    System.out.println(file.exists());
}

在这里插入图片描述

目录删除同文件删除方法一致。

列出当前文件夹包含的文件

方法名方法描述
list()返回一个字符串数组命名由此抽象路径名表示的目录中的文件和目录
istFiles()返回一个抽象路径名数组表示由该抽象路径名表示的目录中的文件
public static void main(String[] args) {
    File file = new File("aaa");
    //下一级的所有文件
    String[] strings = file.list();
    System.out.println(Arrays.toString(strings));
    //下一级的所有文件加该目录
    File[] files = file.listFiles();
    System.out.println(Arrays.toString(files));
}

在这里插入图片描述

在这里插入图片描述

可以看到这里有一个2.txt并没有输出。所以这两个函数是针对于该目录下的文件,并没有对文件的文件进行输出。

文件重命名函数

renameTo():将调用的数据更改成指定的文件名

public static void main(String[] args) {
    File file = new File("aaa");
    File dest = new File("ab");
    file.renameTo(dest);
}

在这里插入图片描述

以上就是对文件目录及文件的创建与删除操作,当然还有更多的其他操作,我所列举的都是一些比较常用的文件操作,希望小伙伴们可以熟练运用,今天的分享就到这里。

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

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

相关文章

Minio对象存储服务介绍、单机和集群部署及其使用

Minio对象存储服务介绍、单机和集群部署及其使用 前言Minio简介Minio版本选择AGPL协议说明Minio优缺点优点缺点 Minio分server 和clientminio-client下载二进制文件查看 mc 版本 Minio分布式集群详细搭建基础环境操作系统Minio下载 准备工作1、机器资源2、创建相关目录3、创建启…

IOC容器与DI依赖注入示例

IOC容器与DI依赖注入示例 IOC深入理解IOC示例: DI深入理解DI示例 IOC深入理解 我们先通过几个问题来加深一下对IOC的理解 (1)Spring是使用IOC容器来管理bean对象的,我们主要管理什么? 主要管理项目中所使用到的类对象,比如(Service层对像和…

哈希表|STL使用

哈希表 时间复杂度为O(1) 拉链法 把X代表的数字映射到N所在区间,有可能会发生冲突俩个或多个数字映射到1个数 拉链法:把冲突的数字挂起来,用单链表挂起来 一般取模的数要取成质数,而且这个质数离二的n次幂要比较远,这样…

什么是深度学习?

目录 简介 深度学习的由来 深度学习未来的趋势 总结 简介 深度学习是在20世纪80年代被提出来的,主要是由加拿大的计算机科学家Geoffrey Hinton、Yoshua Bengio、Yann LeCun等人发起的。Geoffrey Hinton等人在经过多年的研究和实践之后,…

C语言的指针(进阶)

目录 数组指针 数组指针的使用 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 数组指针 数组指针是指针?还是数组? 答案是:指针 数组指针也就是指向一个数组的指针 看下面两条代码: int *p1[10]; int (*p2)[10]; …

Manjaro安装clash-for-windows-bin

安装 安装Clash for Windows yay -S clash-for-windows-bin 配置 命令行进入~/.config/clash/ ,配置文件 config.yaml 和 Country.mmdb wget -O config.yaml [订阅链接]wget -O Country.mmdb https://gitee.com/mirrors/Pingtunnel/raw/master/GeoLite2-Country.…

领导给了一千多个需求,这个排序法救了我的命……

什么是MoSCoW排序法? 莫斯科排序法是一种优先级排序法,用于管理需求、任务或功能列表。该方法可以帮助团队确定哪些需求、任务或功能是最重要的,并决定在特定时间段内是否需要完成它们。 所以在对需求进行排序时,可以从以下维度…

优思学院|六西格玛常见问题有哪些?

要实现高质量、高效率和高客户满意度的目标,许多企业采用了六西格玛方法。然而,在实施过程中,往往会遇到各种各样的问题。优思学院会在这里探讨一下几个六西格玛常见问题,并提供解决方案,以帮助企业成功实施六西格玛方…

JSONP数据劫持漏洞

​介绍 JSONP(JSON with Padding)是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据;它利用的是script标签的 src 属性不受同源策略影响的特性&#x…

GoNote第二章 Moudles

Go Modules 1. 介绍 Go modules是官方提供的go包管理工具,用于解决go包管理和依赖问题;从1.11开始引入,到现在1.14已经比较完善,1.16已经全面推荐使用,并且默认为开启;Go Modules类似于JS的NPM&#xff0…

校园小助手【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址: 更多系统资源库地址:骚戴的博客_CSDN_更多系统资源 更多系统…

Apple iWork(Pages、Numbers、Keynote)13.0 - 文档、电子表格、演示文稿

请访问原文链接:https://sysin.org/blog/apple-iwork-13/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 苹果今天将其专为 iOS 和 macOS 设备设计的 iWork 应用套件更新为版本 12 (sysin),引入了许多新…

高并发服务器之泄峰

文章目录 背景前言解决方案泄峰 泄峰结果总结代码示例 背景 行业: 车联网机器配置:阿里云服务 8核 16G内存 3M带宽 阿里云操作系统单台server接入设备:5w终端产品:GPS定位设备终端与平台通信方式:TCP长链 前言 近期…

Linux中的五种IO模型

Linux中有以下五种IO模型 一、同步阻塞IO(Blocking IO, BIO) 用户进程发起IO调用后就阻塞线程让出CPU,等待内核处理完毕返回结果再唤醒继续执行。 二、同步非阻塞IO(Non-Blocking IO, NIO) 用户进程发起IO调用后就…

前端研发提质增效利器,TypeScirpt成功迁移详解

点击蓝字👆 关注Agilean,获取一手干货 直播预告:Adapt 系列直播又双叒叕来啦!最新一期我们将围绕「版本分支与环境」进行深入探讨,欢迎大家来直播间和主播互动哟~ 点击下方右上角红色按钮「预约」&#x1f…

ESP32设备驱动-PAJ7620手势传感器驱动

PAJ7620手势传感器驱动 文章目录 PAJ7620手势传感器驱动2、硬件准备3、软件准备4、驱动实现PAJ7620 将手势识别功能与通用 I2C 接口集成到单个芯片中,形成图像分析传感器系统。 可识别上、下、左、右、前、后、顺时针、逆时针、挥手等9种人手手势。 它还提供内置的接近检测,以…

网络编程及项目思路

计算机和计算机之间通过网络进行数据传输 常见的软件架构: C/S:客户端/服务器 画面可以做的非常精美,用户体验好需要开发客户端,也需要开发服务端用户需要下载和更新的时候太麻烦 B/S:浏览器/服务器 不需要开发客户端,只需要…

java IO流_1

目录 分类 字节流 InputStream OutputStream 文件拷贝 字符流 FileReader FileWriter 处理流 BufferedReader BufferedWriter 文本拷贝 流是从起源到接受的有序数据,通过流的方式允许程序使用相同的方式来访问不同的输入/输出源。 分类 按数据…

SDK(动态链接库dll)的封装技巧

SDK(动态链接库dll)的封装技巧 一、说明 通过上篇文章,我们知道对于封装API,目的为了代码复用等,其中还有一个重要的原因,就是隐藏实现。 说到隐藏实现,在封装C的SDK库(动态dll库)时&#xff…

【获奖案例巡展】信创先锋之星——浙江省某市区视频能力中心

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…