当前位置: 首页 > 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>是什么 能干嘛 面试题 服务雪崩 安装使…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...