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

javase笔记8---File与IO流

File类型

简介

在程序中,使用java.io.File这个类来描述和操作磁盘上的一个文件或文件夹(目录)。

File这个类,能新建、删除、移动,重命名文件或文件夹,也能获取或者修改文件或文件夹的信息(如大小,修改时间等),但File不能访问文件里的内容。如果需要访问文件里的内容,则需要使用输入/输出流

路径

绝对路径

从磁盘的根目录开始,一层层的向内查找,直到找到这个文件。在不同的操作系统中,根目录的表示方式可能略有不同。

相对路径

是相对于当前工作目录或另一个已知位置的路径。它描述的是文件或目录与当前位置之间的相对关系。相对路径通常省略了根目录部分,直接从当前目录开始描述路径。

./   :  表示当前工作目录。  ./可以省略
../  :  表示返回到上一层目录  

常用构造器

File(String  pathname):通过将指定字符串转换成抽象路径名来创建一个File实例

File(File parent,String child): 从父抽象路径名和子路径名字符串创建新的 File实例。 

File(String parent, String child) : 从父路径名字符串和子路径名字符串创建新的 File实例。

文件属性的方法

1.String  getName()

返回由此抽象路径名表示的文件或目录的名称

2.String  getPath()

将此抽象路径名转换为路径名字符串

3.File getAbsoluteFile()

返回此抽象路径名的绝对形式。

4. String getAbsolutePath()

返回此抽象路径名的绝对路径名字符串。 

5.String getParent()

返回此抽象路径名的父路径名字符串,如果此路径名未指定父目录,则返回null。

6.boolean  renameTo(File  newName)

重命名由此抽象路径名表示的文件。

7.boolean  exists()

测试此抽象路径名表示的文件或目录是否存在

8.boolean  canWrite()

测试应用程序是否可以修改由此抽象路径名表示的文件

9.boolean  canRead()

测试应用程序是否可以读取由此抽象路径名表示的文件

10.boolean  isFile()

测试此抽象路径名表示的文件是否为普通文件 

文件的查询

1.String[]  list()

返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录

2.String[]  list(FilenameFilter  filter)

返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录

3.File[]  listFiles()

返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件

文件的创建与删除

1.boolean  createNewFile()

当且仅当具有该名称的文件尚不存在时,创建一个由该抽象路径名命名的新的空文件

2.boolean  mkdir()

创建由此抽象路径名命名的目录

3.boolean  mkdirs()

创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 

4.boolean  delete()

删除由此抽象路径名表示的文件或目录。注意,删除目录时,必须保证此目录下是空目录,如果目录不是空的,需要先删除里面的东西,再删除目录。   

IO流

概念

IO流: Input Output Stream。

Input(输入):是指数据流入程序,通常我们读取外界数据时使用,所以输入是用来读取数据的。

Output(输出):是指数据从程序流出,通常我们需要写出数据到外界时使用,所以输出是用来写出数据的

分类

按照处理数据的单位分类:

字节流 字符流

按照流的功能分类:

节点流:可以从一个特定的IO设备上读/写数据的流。也称之为低级流

处理流:是对一个已经存在的流的连接和封装,通过所封装的流的功能调用实现数据读/写操作。通常处理流的构造器上都会带有一个其他流的参数。也称之为高级流或者过滤流

应用场景

传统的文件File类,只能够对文件进行属性的操作,例如:创建、移动、删除、属性获取等操作。但是不能获取到文件中的内容

如果需要对文件中的内容进行读写操作,需要使用到IO流。 

使用场景:对磁盘或者网络中的文件进行读写操作。

字节流

简介

InputStream是字节输入流的顶级父类,是抽象类。定义了基本的读取方法。

OutputStream是字节输出流的顶级父类,也是抽象类,定义了基本的写出方法

常用字节流

文件流

FileOutputStream:是文件的字节输出流,以字节为单位写出数据到文件

FileInputStream:是文件的字节输入流,该流以字节为单位从文件中读取数据。

缓冲流

BufferedOutputStream

- 该缓冲输出流内部维护着一个缓冲区,每当我们向该流写数据时,都会先将数据存储缓冲区,当缓冲区已满时,缓冲流会将数据一次性全部写出。

- 使用该流虽然可以提高写出效率,但是缺乏即时性,此时我们可以使用flush方法,清空缓冲区,强制写出。

BufferedInputStream

- 读取数据时因为以字节为单位,往往会因为读取次数过于频繁而大大降低读取效率,因此我们可以通过提高一次读取的字节数量来减少读取次数,从而提高读取的效率

- 该缓冲输入流,内部维护着一个缓冲区。使用该流读取数据时,该流会尽可能多的一次性读取数据存入缓冲区,直到该缓冲区中的数据被全部读取完毕,会再次读取数据存入该缓冲区,反复进行。这样就减少了读取次数,从而提高效率。

数据流

DataOutputStream

- 该流是FilterOutputStream的子类,扩展了一些功能,提供了一些可以直接写出基本数据类型的方法
- 构造方法
- DataOutputStream(OutputStream os)

DataInputStream

- 该流提供了一些可以直接读取基本数据类型的方法
- 构造方法
- DataInputStream(InputStream is)

对象流

对象是存在于内存中的,有的时候我们需要将对象保存到硬盘上,又有时我们需要将对象传输到另一台计算机上等等这些的操作。

此时,我们需要将对象转换成一个字节序列,这个过程我们称之为序列化。

相反,我们将一个字节序列转换成对应的对象,这个过程我们称之为反序列化

通过ObjectOutputStream流的方法WriteObject(Object o)实现对象序列化,通过ObjectInputStream流的方法readObject()实现对象反序列化。

字符流

简介

Reader是字符输入流的父类,抽象类;Writer是字符输出流的父类,抽象类。字符流是以字符(char)为单位读写数据的,一次处理一个unicode。字符流的底层仍然是基本的字节流

转换流

OutputStreamWriter

使用该流可以设置字符集,并按照指定的字符集将字符转换成字节后通过该流写出

InputStreamReader

使用该流可以设置字符集,并按照指定的字符集从流中按照该编码将字节数据转换为字符并读取

缓冲字符流

PrintWriter

PrintWriter是具有自动行刷新的缓冲字符输出流,其提供了比较丰富的构造方法,通常比BufferedWriter更实用。

BufferedReader

BufferedReader是缓冲字符输入流,内部提供了缓冲区,可以提高读取效率。

文件字符流

FileWriter

相当于OutputStreamWriter和FileOutputStream合起来的功能

FileReader

相当于InputStreamReader和FileInputStream合起来的功能,但是不能设置字符集

相关文章:

javase笔记8---File与IO流

File类型 简介 在程序中,使用java.io.File这个类来描述和操作磁盘上的一个文件或文件夹(目录)。 File这个类,能新建、删除、移动,重命名文件或文件夹,也能获取或者修改文件或文件夹的信息(如大小,修改时间等)&#xf…...

docker上传离线镜像包到Artifactory

docker上传离线镜像包到Artifactory 原创 大阳 北京晓数神州科技有限公司 2024年10月25日 17:33 北京 随着docker官方源的封禁,最近国内资源也出现无法拉取的问题,Artifactory在生产环境中,很少挂外网代理去官方源拉取,小编提供…...

【专用名词的离线语音识别在2024年底的解决方法调查-会议签到的补充】

语音识别在会议点名中的使用 概要解决问题的过程不行的一些参考可以的一个package自定义词语的拼音转换遗留的问题 小结 概要 提示:这里可以添加技术概要 这里只实现一个方面,每个android会议设备都可通过语音发送参会者姓名,自动转换成文字添加到人员名单. 语音采集…...

OS基础-

OS基础 内存管理 内核用户设备管理 设备框架I/O子系统网络多媒体 音频视频运维 控制台GUIdebug审计计算机组成 CPU ALUregister SPLRPCR0-R12CPSRcacheclockInterrupt Vector tableIVTRMMU/MPU 内存访问权限配置,支持多进程BUSMEMORYI/O单线程 特点:结构…...

《大型语言模型实战指南:应用实践与场景落地》一文详解大型语言模型的11种微调方法

导读:大型预训练模型是一种在大规模语料库上预先训练的深度学习模型,它们可以通过在大量无标注数据上进行训练来学习通用语言表示,并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大,微调和推理阶段的资源消耗也在增加。…...

嵌入式浏览器 -- Chromium VS Firefox

嵌入式浏览器概念 嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒…...

权限大、数量多、破坏强、管理难......企业特权访问管理怎么管?

特权账号,通往企业数据大门的“钥匙”。 它权限大,具有高危命令或操作的执行权限; 破坏性强,操作可能影响他人使用或其他系统故障; 信息泄露风险大,操作可能获取别人或其他系统相关隐私信息;…...

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统,看了一下第一人称例子里,算是看明白了,但是感觉这东西使用起来有点绕,特此梳…...

如何在Linux下安装和配置Docker

文章目录 安装前的准备在Debian/Ubuntu上安装Docker添加Docker仓库安装Docker验证安装 在CentOS/RHEL上安装Docker安装必要的软件包设置Docker仓库安装Docker启动Docker服务 Docker的基本使用拉取一个镜像运行一个容器 配置Docker创建Docker目录使用非root用户运行Docker 结语 …...

apisix的原理及作用,跟spring cloud gateway有什么区别?

apache APISIX 是一个高性能、可扩展的开源 API 网关,它主要用于处理 API 请求、流量管理、安全控制和服务治理。APISIX 可以将复杂的服务架构中的不同服务通过统一的网关来进行管理和监控,为微服务架构提供了便捷的流量入口管理方式。 APISIX 的原理 …...

华为HarmonyOS实现实时语音识别转文本

场景介绍 将一段音频信息(短语音模式不超过60s,长语音模式不超过8h)转换为文本,音频信息可以为pcm音频文件或者实时语音。 开发步骤 在使用语音识别时,将实现语音识别相关的类添加至工程。 import { speechRecogni…...

DIY可视化-uniapp悬浮菜单支持拖动、吸附-代码生成器

在Uniapp中,悬浮菜单支持拖动和吸附功能,可以为用户带来更加灵活和便捷的操作体验。以下是对这两个功能的详细解释: 悬浮菜单支持拖动 提高用户体验:用户可以根据自己的需要,将悬浮菜单拖动到屏幕上的任意位置&#x…...

HTTP cookie 与 session

一.Cookie 定义: 是服务器发送到用户浏览器并保存在浏览器上的一小块数据, 它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。 通常, 它用于告知服务端两个请求是否来自同一浏览器, 如保持用户的登录状态、 …...

智慧停车场导航系统架构及反向寻车系统解决方案

一、系统概述: 随着当前室内定位导航技术在大型公共场所如政务中心、商业综合体、车站中的应用越来越多,人们对智慧停车场的需求也日益凸显出来,并且智慧停车场对大型公共场所智慧化的整体建设起到重要作用。如何更有效提高停车效率&#xf…...

【小程序上传图片封装2024,支持多图,带进度,上传头像】

import config from ./config;// 支持多图,显示进度 export function uploadImages(count 1, sourceType, onLoading null, showProgress false, fileKey file) {return new Promise((resolve, reject) > {wx.chooseMedia({count: count, // 可以选择的图片数…...

[A-14]ARMv8/ARMv9-Memory-内存模型的类型(Device Normal)

ver0.1 [看前序文章有惊喜。] 前言 前面花了很大的精力把ARM构建的VMSA中的几个核心的议题给大家做了介绍,相信大家已经能够理解并掌握ARM的内存子系统的工作原理大致框架。接下来我们会规划一些文章,对ARM内存子系统的一些细节做一下介绍,使ARM的内存子系统更加的丰满。本…...

驾校管理系统|基于java和小程序的驾校管理系统设计与实现(源码+数据库+文档)

驾校管理系统平台 目录 基于java和小程序的驾校管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#…...

@Mapper使用中遇到的问题解法汇总

最近终于有时间写点代码相关的文章了,工作真的太忙了,果然又要测试又要开发的人最🐂🐴。 1.查询数据库有数据,但是代码中写select语句的时候查出为null Select("SELECT * FROM xx_manager order by id limit 1&q…...

深度学习:YOLO V3 网络架构解析

引言 YOLO V3(You Only Look Once Version 3)是YOLO系列算法的第三个版本,相比之前的版本,它在多个方面进行了优化和改进,不仅提升了检测精度,还保持了较快的检测速度。本文将详细介绍YOLO V3的主要改进以…...

SpringCloudAlibaba-Sentinel-熔断与限流

版本说明 <spring.boot.version>3.2.0</spring.boot.version> <spring.cloud.version>2023.0.0</spring.cloud.version> <spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version>是什么 能干嘛 面试题 服务雪崩 安装使…...

mysql中的mvcc理解

是什么&#xff1a;MVCC指的是在读已提交、可重复读这两种隔离级别下的事务在执行普通的select操作时&#xff0c;访问记录的版本链的过程&#xff0c;可以使不同事务的读写操作并发执行&#xff0c;提高性能。 MVCC 隐藏字段 undo log 版本链 ReadView 1.隐藏字段&#xf…...

ETF申购赎回指南:详解注意事项与低费率券商推荐!

​ETF 申购&赎回 ETF申购赎回是个啥业务&#xff1f; 01 ETF申购、赎回是一种交易委托方式&#xff0c;指投资者通过申购方式(买入方向)获得ETF份额&#xff0c;通过赎回的方式&#xff08;卖出方向&#xff09;换掉/卖出ETF份额。ETF申购&#xff0c;通常是通过一篮子成…...

List<T>属性和方法使用

//author&#xff1a;shark_ddd using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;//使用函数来减少长度namespace List_T {class Student{public string Name { get; set; }public int Age { get; set; …...

记一次:使用使用Dbeaver连接Clickhouse

前言&#xff1a;使用了navicat连接了clickhouse我感觉不太好用&#xff0c;就整理了一下dbeaver连接 0、使用Navicat连接clickhouse 测试连接 但是不能双击打开&#xff0c;可是使用命令页界面&#xff0c;右键命令页界面&#xff0c;然后可以用sql去测试 但是不太好用&#…...

Java面向对象编程进阶(四)

Java面向对象编程进阶&#xff08;四&#xff09; 一、equals()方法的使用二、toString()方法的使用三、复习 一、equals()方法的使用 适用性&#xff1a;任何引用数据都可以使用。 自定义的类在没有重写Object中equals()方法的情况下&#xff0c;调用的就是Object类中声明的…...

【51单片机】第一个小程序 —— 点亮LED灯

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 单片机介绍LED灯介绍练习创建第一个项目点亮LED灯LED周期闪烁 单片机介绍 单片机&#xff0c;英文Micro Controller Unit&#xff0…...

如何通过自动化有效地简化 Active Directory 操作?

我们都知道规模稍微大一点的企业为了便于计算机的管理&#xff0c;基本都上了微软的AD域控制器。 那么肯定就会存在这么一个问题&#xff0c; 不断的会有计算机加入或者是退出域控制器&#xff0c;批量的创建、修改、删除AD域用户&#xff0c;如果企业的架构需要改变&#xff…...

Java-POI导出EXCEL(动态表头)

1、主要功能 导出excel&#xff0c;表头有固定的和动态的。动态表头之间不能穿插固定表头。 2、使用方法 引入下方两个工具类&#xff0c;定义excel固定表头类。调用方法即可。 调用方法&#xff1a; ExcelDynamicHeader<MajorNameChangeReport> ledgerSafetyProblemEx…...

利用 Direct3D 绘制几何体—9.流水线状态对象

到目前为止展示过编写输入布局描述、创建顶点着色器和像素着色器&#xff0c;以及配置光栅器状态组这 3 个步骤。接下来讲如何将这些对象绑定到图形流水线上&#xff0c;用以实际绘制图形。大多数控制图形流水线状态的对象被统称为流水线状态对象&#xff08;Pipeline State Ob…...

【开源项目】libfaketime安装、使用——小白教程

项目 Github&#xff1a;GitHub - wolfcw/libfaketime: libfaketime modifies the system time for a single application libfaketime安装 01.切换路径&#xff0c;目标路径&#xff1a;/usr/local &#xff08;在/usr/local路径下git clone 开源项目) 切换路径指令: cd …...

做仪表宣传哪个网站好/免费的网页模板网站

在网上查找了很多相同问题的答案&#xff0c;但是都没有合适的方法解决我的问题&#xff0c;求大神们指点K1442.3926125;K245483.17187;K30.000253321;K422987873.07;K56.301410878;K62.537198529;K73.82405E17;K81.79031E23;K91.65563E-22;K105.751160296;K11115.997776;K1228…...

网站增加导航栏/百度推广怎么登陆

嵌入式Linux下NAND flash上根文件系统构建嵌入式Linux下NAND flash上根文件系统构建摘要&#xff1a;针对嵌入式Linux操作系统&#xff0c;通常选择NAND Flash烧录根文件系统的情况。说明了常用嵌入式文件系统的类型及NANDflash的特点&#xff1b;通过在三星的ARM9 2410S平台上…...

建设将网站加入受信网站再试/河北百度推广客服电话

6.7.2 设置串口通信参数串口通信参数指的是波特率、数据位、奇偶校验位和停止位。对串口实现控制的时候同样要用到termio结构体。下面将结合具体的代码说明如何设置这些参数。1&#xff0e;波特率设置获得端口波特率信息是通过cfgetispeed函数和cfgetospeed函数来实现的。cfget…...

做门户网站可以用的字体/品牌网站建设方案

被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言&#xff0c;其中肯定有一些你尚未发现的功能。那么今天或许我能够让你学到一些新技巧。 Python的发展&#xff1a; “人生苦短&#xff0c;我用 Python”&#xff0c;Python 的经典 slogan 讲究争分夺秒&#x…...

网站怎么弄模板/出词

UR-介绍1 资料1.1 简介1.2 资料1.3 网站2 远程用户密码3 通信3.1 The overview of four options is as below3.2 UR CB-Series3.3 UR e-Series4 URScript5 机器人状态读取6 工控机7 控制器芯片8 数据定义参考1 资料 1.1 简介 UR机器人作为目前使用广泛的协作机器人&#xff0…...

龙岗做商城网站建设/谷歌网页版登录入口

1.杭州 阿里&#xff0c;网易&#xff0c;京东网银&#xff0c;百度钱包&#xff0c;蘑菇街&#xff0c;丁香园 2 北京 360&#xff0c;美团转载于:https://www.cnblogs.com/dan-cnblogs/p/4700996.html...