File 类的用法, InputStream和Reader, OutputStream和Writer 的用法
前言
普通的文件长这样:
其实目录也是一种特殊文件:
一、文件前缀知识
(一)绝对路径和相对路径
以盘符开头的的路径,叫做绝对路径,如:D:\360Downloads\cat.jpg
以.或..开头的路径,叫做相对路径,如:./t/tmp/cat.jpg (/或\作为分隔符都是正确的)
查找文件时的路径案例如下:

(二)关于程序运行时的输入和输出分析示意图

二、File
File file = new File("./t.txt");//File(文件路径)
关于File的常见方法的使用:
file.creatNewFile();//创建文件(如果该文件已经存在,不会创建)
file.delete();//删除文件
file.deleteOnExit();//程序退出时再删除文件
file.mkdir();//一次只能创建一层目录
file.mkdirs();//一次创建多级目录
file.isFile();//当前文件是否是一个普通文件
file.isDirectory();//当前文件是否是目录文件
file.list();//返回String[]类型,file下所有文件名
file.listFiles();//返回File[]类型,file下所有文件
file.renameTo(new File);//改名字
file.exists();//当前文件是否存在
三、InputStream和Reader
InputStream是字节流,Reader是字符流。
(一)文本文件和二进制文件
字节流是专门操作以字节为单位的文本文件,字符流是专门操作以字符为单位的二进制文件。
区分一个文件是文本文件还是二进制文件,可以通过记事本区分,如一个文件通过记事本的方式打开后,显示的数据内容是文字还是乱码:

这个显示是乱码,故是二进制文件。

这个显示是正常可读的文字,故是文本文件。
(二)关闭文件的正确打开方式
关于使用一个文件的步骤是,先打开文件,使用文件,关闭文件。
关闭文件是非常重要的 。这里提供两种关闭文件的方式:
1):try-finally
Reader reader = new FileReader("./t/text2.txt");try {}finally {reader.close();}
2):try with source
try( Reader reader = new FileReader("./t/text2.txt")){}
(三)Reader
Reader reader = new FileReader("./t/text2.txt");
对于Reader:
- read() 一次读一个字符;
- read(char[] buf) 一次读最多buf.length字符;
- read(char[] buf,int off,int len) buf是保存路径,off是buf的开始保存下标,len是保存数目.
其中,无论是哪一个方法,他们的返回值都是int类型,表示读取到的数据个数,当文件读取到eof(文件末尾),返回-1.
(四)InputStream
InputStream inputStream = new FileInputStream("./t/text2.txt");
对于InputStream,read方法的用法和Reader一样,只是这里是以字节为单位传输数据。
四、OutputStream和Writer
输出流对象(字符流/字节流)会在打开文件后,自动清空文件内容!!!
OutputStream是字节流,Writer是字符流。
(一)OutputStream
OutputStream outputStream = new FileOutputStream("./t/text1.txt");
虽然输出流在打开文件后会自动清空文件,但是也有不清空文件的办法:
通过追加的方式打开文件,此时就不会清空内容了:
OutputStream outputStream = new FileOutputStream("./t/text1.txt",true);
对于OutputStream:
outputStream.write("hello");
以字符的方式写入。
(二)Writer
Writer writer = new FileWriter("./t/text1.txt");
以字节的方式写入: writer.write(byte[] buf);
结语
这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!
相关文章:
File 类的用法, InputStream和Reader, OutputStream和Writer 的用法
前言 普通的文件长这样: 其实目录也是一种特殊文件: 一、文件前缀知识 (一)绝对路径和相对路径 以盘符开头的的路径,叫做绝对路径,如:D:\360Downloads\cat.jpg 以.或..开头的路径,…...
AtCoder Beginner Contest 315 Task:A/B/C/E
A - tcdr 处理字符串简单题,题目要求去除字符串中的a,e,i,o,u即可 #include<iostream> using namespace std; int main() {string s;cin>>s;for(int i0;i<s.length();i){if(s[i]a||s[i]e||s[i]i||s[i]o||s[i]u)continue;cout<<s[i];} }B - T…...
【项目实践】基于LSTM的一维数据扩展与预测
基于LSTM的一维数据拟合扩展 一、引(fei)言(hua) 我在做Sri Lanka生态系统服务价值计算时,中间遇到了一点小问题。从世界粮农组织(FAO)上获得Sri Lanka主要农作物产量和价格数据时,其中的主要作物Sorghum仅有2001-2006年的数据,而Millet只有…...
webshell实践,在nginx上实现负载均衡
1、配置多台虚拟机,用作服务器 在不同的虚拟机上安装httpd服务 我采用了三台虚拟机进行服务器设置:192.168.240.11、192.168.240.12、192.168.240.13 [rootnode0-8 /]# yum install httpd -y #使用yum安装httpd服务#开启httpd服务 [rootnode0-8 /]# …...
LVS+Keepalived集群
keepalived Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务…...
Java的网络编程
网络编程 两台设备之间通过网络实现数据传输,将数据通过网络从一台设备传输到另一台设备 网络 两台或多台设备通过一定物理设备连接起来构成了网络 网络又分为: 局域网:覆盖范围最小,仅仅覆盖一个教室或一个机房城域网:覆盖范围较大,可以…...
kafka配置远程连接
要想实现在本地连接服务器的kafka,则必须在远程kafka配置远程连接 默认的 kafka 配置是无法远程访问的,解决该问题有几个方案。 方案1 advertised.listenersPLAINTEXT://IP:9092 注意必须是 ip,不能是 hostname 方案2 advertised.listene…...
css实现渐变色border
方式1 div {border: 4px solid;border-image: linear-gradient(to right, #8f41e9, #578aef) 1; }/* 或者 */ div {border: 4px solid;border-image-source: linear-gradient(to right, #8f41e9, #578aef);border-image-slice: 1; }作者:MudOnTire 链接:…...
管理 IBM Spectrum LSF
管理 IBM Spectrum LSF 了解如何管理 IBM Spectrum LSF 集群,控制守护程序,更改集群配置以及使用主机和队列。 管理 LSF 作业和作业调度策略。 查看作业信息和控制作业。 了解如何配置资源并将其分配给 LSF 作业。 了解如何在 LSF 集群中提交࿰…...
117页数字化转型与产业互联网发展趋势及机会分析报告PPT
导读:原文《》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以点赞评论转发本文,了解更多内容请私信:方…...
【JavaWeb】实训的长篇笔记(上)
JavaWeb的实训是学校的一门课程,老师先讲解一些基础知识,然后让我们自己开发一个比较简单的Web程序。可涉及的知识何其之多,不是实训课的 3 周时间可以讲得完的,只是快速带过。他说:重点是Web开发的流程。 我的实训草草…...
如何使用Docker安装AWVS?
前言 还记得很早的时候使用AWVS,还需要找位置,贴补丁,放文件,现在慢慢掌握Docker后发现,使用Docker去部署一些东西就很方便,当然也包括AWVS。 我们今天带大家通过Docker部署AWVS(有中文哦&…...
vue命名规范
文件和文件夹的命名: 文件夹命名: Vue 项目中通常可以根据功能或页面来划分文件夹。例如,您可以为每个页面创建一个文件夹,并将相关的组件、样式和资源文件放在其中。文件夹的命名最好使用短横线分隔的小写字母(kebab …...
第05天 SpringBoot自动配置原理
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏:…...
AlphaZero能否从围棋和国际象棋飞跃到量子计算?
一项新的研究表明,DeepMind惊人的游戏算法AlphaZero可以帮助释放量子计算的力量和潜力。 自两年多前出现以来,AlphaZero一再证明了其快速学习能力,将自己提升到围棋,国际象棋和将棋(日本象棋)的特级大师级别…...
进程切换
进程切换 上下文切换上下文切换的消耗上下文切换与模式切换 对于通常的进程而言,其创建、撤销及要求由系统设备完成的IO操作,都是利用系统调用而进入内核,再由内核中的相应处理程序予以才完成的。进程切换同样是在内核的支持下实现的…...
ES踩坑记录之UNASSIGNED分片无法恢复
问题背景 换节点 我们线上有一套ES集群,三台机器,共运行了6个节点。一直在线上跑了几个月也一直没出什么问题。然而好巧不巧,就在昨天,集群中的3号节点磁盘出现故障,导致机器直接瘫痪。本来大家觉得问题不大…...
ubuntu更换国内apt源
ubuntu必备操作 1 更换apt镜像源 备份镜像 cp /etc/apt/sources.list /etc/apt/sources.list.bak查看自己ubuntu版本 # 查看自己的codename #查看自己的ubuntu版本[注意关注:DISTRIB_CODENAME,发行代号] cat /etc/*release# DISTRIB_CODENAMEcosmic …...
OpenCV-Python中的图像处理-视频分析
OpenCV-Python中的图像处理-视频分析 视频分析Meanshift算法Camshift算法光流Lucas-Kanade Optical FlowDense Optical Flow 视频分析 学习使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象: Meanshift算法 Meanshift 算法的基本原理是和很简单的。假设我们有一堆…...
STM32 CubeMX (第四步Freertos内存管理和CPU使用率)
STM32 CubeMX STM32 CubeMX (第四步Freertos内存管理和CPU使用率) STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1(不要选择滴答定时器;滴答定时器留给OS系统做时基)使用STM32 CubeMX 库,配置Fr…...
Cadence Allegro PCB设计效率提升:自定义快捷键配置全攻略
1. 项目概述:为什么我们需要自定义快捷键?如果你是一名电子工程师,或者正在使用Cadence Allegro进行PCB设计,那么“效率”这个词对你来说一定不陌生。每天,我们都要在Allegro的复杂菜单和工具栏中穿梭,点击…...
AI写作检测规避:原理、工具与实践指南
1. 项目概述:为什么我们需要“AI写作检测规避”工具?在内容创作领域,尤其是技术博客、学术写作和日常办公文档中,AI辅助写作工具已经变得无处不在。它们能快速生成草稿、润色语言、甚至构建复杂的技术方案。然而,随之而…...
从0到4倍:一次产品冷启动的完整复盘
近期终于有了大块的时间,打算把自己做开发者关系的一些经历都梳理出来。背景:我们做了一个类似 Windows 注册表的配置管理模块,并在上面增加了配置叠加和分层权限管控。它的核心价值是这样的:之前之后系统集成团队想改某个应用的行…...
从ASCII到机器码:深入解析HEX文件的结构与校验机制
1. HEX文件的前世今生:从ASCII到机器码的桥梁 第一次接触HEX文件时,我也被那一串串看似毫无规律的十六进制字符搞得一头雾水。直到后来在嵌入式开发中频繁使用HEX文件进行固件升级,才真正理解了这个"翻译官"的重要性。HEX文件本质上…...
构建思想知识图谱:NLP与Elasticsearch在结构化资料库中的应用
1. 项目概述与核心价值最近在整理一些历史资料和思想研究时,我接触到了一个名为“mao-zedong-perspective”的项目。这个项目名直译过来就是“毛泽东视角”,它并非一个传统的软件应用,而更像是一个数字化的思想资料库或研究框架。作为一名长期…...
【DeepSeek偏见测试权威报告】:20位AI伦理专家联合验证的5大隐性偏差漏洞及规避指南
更多请点击: https://intelliparadigm.com 第一章:DeepSeek偏见测试的权威性与方法论基石 DeepSeek系列模型在开源社区引发广泛关注,其偏见评估并非依赖单一指标,而是构建于多维度、可复现的方法论体系之上。权威性源于三重验证机…...
产品经理面试与求职攻略:Awesome Product Management 职业转型成功案例
产品经理面试与求职攻略:Awesome Product Management 职业转型成功案例 【免费下载链接】awesome-product-management 🚀 A curated list of awesome resources for product/program managers to learn and grow. 项目地址: https://gitcode.com/gh_mi…...
会议录播堆积如山?用这款AI工具3分钟自动生成会议纪要
一个很普遍的职场痛点:每周开3-4个会,录播存了一堆,但从来没有整理过。 不是不想整理,是整理一小时的会议录像至少要40分钟——要从头拉一遍、要标重点、要区分谁说了什么、要提炼行动项。忙的时候根本没时间干这个。 结果就是&…...
2026 国产桌面 AI 智能体横向评测:博云 BoClaw vs AutoClaw vs QClaw vs MaxClaw vs WorkBuddy
一、引言2026 年初,一款名为 OpenClaw 的开源 AI 智能体框架以创纪录的速度蹿红全球——短短数月突破 30 万 GitHub Star,Token 使用量一度占据 OpenRouter 平台总量的约 13%。它之所以引发轰动,核心在于首次让 AI 真正实现从“动口”到“动手…...
0.2mm间距测试探针技术解析与应用指南
1. 0.2mm间距测试探针的技术突破与应用价值在半导体测试领域,随着芯片封装尺寸的持续缩小和信号频率的不断提升,传统测试探针已难以满足高密度互连与高频测试的双重需求。Aries Electronics最新推出的0.2mm间距测试探针,采用镀金铍铜材料和特…...


