Java IO流
Java IO流
文章目录
- Java IO流
- 什么是IO流
- InputStream
- FlieInputStream
- 示例
- OutputStream
- 示例
- 字符的读取与写入
- READER方法
- WRITER方法
- 利用Scanner和PrintWriter简化字符的读写
- Scanner
- PrintWriter
什么是IO流
前面我们介绍了Java中对文件的操作以及file类的了解,但是file类只能对文件信息进行操作,创建,获取,删除,列表,重命名。无法进行文件的读取和写入。
在Java中I/O操作是指对文件进行输入Input/输出Output操作。 Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
Java中针对Input和Output提供了2个抽象类
InputStream:输入流,把文件数据读取到内存
OutputStream:输出流,把数据从内存输出到文件中
在系统中有很多种的文件类型一般分为 文本文件和二进制文件
Java分别对这两种文件类型提供了相应的方法对文件进行读写。

InputStream
常见的方法
| int | read() | 读取一个字节的数据,读完返回-1 |
|---|---|---|
| int | read(byte[] b) | 最多读取b.length个字节的数据 |
| int | read(byte[] b,int off,int len) | 最多读取len-off个字节数据 |
| void | close() | 关闭字节流 |
InputStream只是一个抽象类,要使用还需要具体的实现类。关于InputStream的实现类很多,这里简单的介绍一下FileInputStream
FlieInputStream
| FileInputStream(File file) | 利用File文件构造文件输入流 |
|---|---|
| FileInputStream(File file) | 利用文件路径创建输入流 |
示例
利用文件路径读文件内容
public static void main(String[] args) throws IOException {// 创建一个输入流,读取文件内容FileInputStream inputStream=new FileInputStream("d:/JAVA/temp/test/aaa.txt");//用一个byte数组,来接收每次读取的内容,扩大缓冲区容量byte[] bytes=new byte[1024];//读取文件中的数据while (true){//获取每次读取的长度int len=inputStream.read(bytes);if (len==-1){break;}//打印读取到的内容for (int i = 0; i < len; i++) {System.out.println((char) bytes[i]);}//关闭流inputStream.close();}
}
OutputStream
| void | write(int b) | 写入要给字节的数据 |
|---|---|---|
| void | write(byte[]b) | 将b 这个字符数组的全部数据写到os中 |
| int | write(byte[]b,int off,int len) | 将b数组中从off开始把数据写到os中,一个写len个 |
| void | close() | 关闭流 |
| void | flush() | 刷新缓冲区,将数据从缓冲区写入文件 |
在计算机系统中,硬件之间的传输速度是很慢的,大量的OutputStream操作会使操作时间大大加长,因此,在写入数据时,会将写入数据暂时存放在内存的一个指定的区域里,一般称为缓冲区,直到缓冲区满了或者其他条件时,才将缓冲区的数据写入到目标文件中。但有可能会造成一部分数据遗留到缓冲区里,因此调用flush方法,将数据刷到文件中。
示例
public static void main(String[] args) throws IOException {FileOutputStream outputStream=new FileOutputStream("d:/JAVA/temp/test/aaa.txt");outputStream.write(97);outputStream.write(98);outputStream.write(99);//刷新缓冲区outputStream.flush();outputStream.close();
}
字符的读取与写入
READER方法
public static void main(String[] args) throws IOException {FileReader reader=new FileReader("d:/JAVA/temp/test/aaa.txt");while (true){int data=reader.read();//返回-1表示读取结束if (data==-1){break;}System.out.println(data);}reader.close();
}
WRITER方法
public static void main(String[] args) throws IOException {FileWriter writer=new FileWriter("d:/JAVA/temp/test/aaa.txt");writer.write("123\n");writer.write("哈喽");//刷新缓冲区writer.flush();//关闭流writer.close();
}
利用Scanner和PrintWriter简化字符的读写
上述例子中,InputStream、OutputStream对字符类型文件进行读取是非常麻烦的,所以用Scanner类和PrintWriter类进行简化
Scanner
public static void main(String[] args) throws IOException {FileInputStream inputStream=new FileInputStream("d:/JAVA/temp/test/aaa.txt");//借助Scanner简化字符的读操作Scanner scanner=new Scanner(inputStream,"UTF-8");while (true){if (!scanner.hasNextLine()){break;}//获取数据String nest=scanner.nextLine();System.out.println(nest);}scanner.close();inputStream.close();
}
PrintWriter
public static void main(String[] args) throws IOException {FileOutputStream outputStream=new FileOutputStream("d:/JAVA/temp/test/aaa.txt");PrintWriter writer=new PrintWriter(outputStream);writer.println("你好世界!!!");writer.println("哈哈");writer.println("hello world!!!");writer.printf("%s:%d\n","单价",5);//强制刷新缓存writer.flush();writer.close();outputStream.close();
}相关文章:
Java IO流
Java IO流 文章目录Java IO流什么是IO流InputStreamFlieInputStream示例OutputStream示例字符的读取与写入READER方法WRITER方法利用Scanner和PrintWriter简化字符的读写ScannerPrintWriter什么是IO流 前面我们介绍了Java中对文件的操作以及file类的了解,但是file类…...
LeetCode - 1653 使字符串平衡的最少删除次数
目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1653. 使字符串平衡的最少删除次数 - 力扣(LeetCode) 题目描述 给你一个字符串 s ,它仅包含字符 a 和 b 。 你可以删除 s 中任意数目的字符,使得 …...
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
《超导电子技术及其应用》学习日志(二)
约瑟夫森效应 约瑟夫森理论 约瑟夫森方程 (1)每一个库柏对都可视为质量为2m、电量为2e的复合载流子,定向运动速度v就是库柏相对质心的速度。处于超导态的库柏对凝聚于同一量子态,运载电流时具有完全相同的动量P。用微观波函数来…...
微信小程序this指向问题
前言 最近在开发微信小程序时不时会遇到一个很奇怪的问题,有些情况下用 this.setData 可以改变视图显示,有些情况下使用 this.setData 无效,这又是为什么呢? 问题描述 在解释这个问题前,我们先来看两段代码࿱…...
【报错】paddle相关报错和处理方法
1 报错 😱😱😱 ModuleNotFoundError: No module named paddle 2 解决方法 💉💉💉 pip --default-timeout=100 install paddlepaddle -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 🎉🎉🎉🎉🎉🎉 1 报错 😱😱😱 from paddl…...
unity的安装配置和第一个游戏-unity开学第一课
许多的小伙伴学编程语言其实是因为玩游戏,玩着玩着就想写游戏了,于是开始学习c学习C#学习java,但相比之下C#的操作会更加容易,所以就开始学习unity来编游戏了。这里就就算是unity开学第一课啦-unity的安装配置和第一个游戏。 文章…...
Elsevier上传LaTeX 修改稿踩坑
背景 千辛万苦修改完论文,结果发现要求上传可编辑文件,tex上传真的太难了,一堆坑,尤其是编译错误,要等系统创建pdf后才能找到。中间还打了北京的客服电话,结果他们那边并不懂相关的东西。说latex是第三方公…...
秒懂算法 | 搜索基础
本篇介绍了BFS和DFS的概念、性质、模板代码。 01、搜索简介 搜索,就是查找解空间,它是“暴力法”算法思想的具体实现。 暴力法(Brute force,又译为蛮力法):把所有可能的情况都罗列出来,然后逐一检查,从中找到答案。这种方法简单、直接,不玩花样,利用了计算机强大的…...
Flutter 自定义今日头条版本的组件,及底部按钮切换静态样式
这里写目录标题1. 左右滑动实现标题切换,点击标题也可实现切换;2. 自定义KeepAliveWrapper 缓存页面;2.2 使用3. 底部导航切换;4. 自定义中间大导航;5.AppBar自定义顶部按钮图标、颜色6. Tabbar TabBarView实现类似头条…...
SpringBoot学习笔记(二)配置文件
1、配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的;application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML:以数…...
09说说乐观锁和悲观锁
乐观锁和悲观锁是在并发编程中经常用到的两种锁机制。悲观锁是指在访问共享资源之前,会先加锁,以防止其他线程修改该资源,从而保证数据的一致性和完整性。在使用悲观锁时,如果一个线程已经占用了该资源,那么其他线程只…...
【C++】vector的模拟实现
文章目录1.查看STL源码2.vector的模拟实现1. 构造函数无参构造构造n个 val迭代器模板2. reserve3. 迭代器4.pop_back 尾删5.resize6.push_back7.insert迭代器失效—— pos为野指针迭代器失效——修改迭代器位置8. erase对于VS和Linux环境测试3.深浅拷贝问题4. 整体代码实现1.查…...
THUPC-2023 游记
清华校赛,战火重燃 原文链接 宣传图 上周四同学在洛谷无意间看到了宣传图,当时很有感触。不知觉间,又是一年春,又是一场触动心弦的 THUPC 了。 周五的团建过于有趣,致使我完全将 THUPC 抛之脑后了。 周日上午被省选…...
Linux - 磁盘I/O性能评估
文章目录概述RAID文件系统与裸设备的对比磁盘I/O性能评判标准常用命令“sar –d”命令组合“iostat –d”命令组合“iostat –x”单独统计某个磁盘的I/O“vmstat –d”命令组合小结概述 RAID 可以根据应用的不同,选择不同的RAID方式 如果一个应用经常有大量的读操…...
计算机网络--网络基础
目录 一.互联网的组成 编辑 1.互联网的边缘部分 1.1客户-服务器方式 1.2对等连接方式 编辑 2.互联网的核心部分 2.1电路交换 2.2分组交换 2.3报文交换 二.计算机网络的类别 1.按网络的作用范围进行分类 2.按网络的使用者进行分类 3.用来把用户接入互联…...
Gin 接口超时控制
文章目录1.Gin 的 Middleware2.gin-contrib/timeout3.小结参考文献API 是现代应用程序中的重要组成部分,可以用于提供数据和功能,供客户端应用程序访问。由于网络不稳定、服务器负载、网络拥堵等因素,API 请求可能会花费较长时间。这可能导致…...
1.C#与.NET简介
目录 一、C#语言及其特点 二、C#与.NET Framework/.NET Core关系 三、C#应用开发 四、案例展示 五、学习环境 一、C#语言及其特点 C#是美国微软公司发布的一种面向对象的,运行于 .NET Framework 和 .NET Core (完全开源,跨平台ÿ…...
OpenAI CTO、吴恩达夫人……AI 领域值得关注的「她」力量,个个都是女强人
内容一览: 「她时代」来临,一些有着强大信念与热情的女性,纷纷投身至 AI 领域,成为不可或缺的存在与力量。值此国际妇女节到来之际,HyperAI超神经盘点了领域内令人印象深刻的杰出的女性代表。 关键词:国际妇…...
[ 网络 ] 应用层协议 —— HTTP协议
目录 1.HTTP协议 1.1URL urlencode和urldecode 2. HTTP协议格式 HTTP请求 HTTP响应 3.告知服务器意图的HTTP方法 GET:获取资源 POST:传输实体主体 GET和POST的区别 使用Cookie的状态管理 4.返回结果的HTTP状态码 状态码告知从服务器端返回的…...
VS2019/2022插件安装指南:让CppCheck帮你揪出C++代码里那些编译器发现不了的‘幽灵Bug’
VS2019/2022插件安装指南:让CppCheck帮你揪出C代码里那些编译器发现不了的‘幽灵Bug’ 在C开发中,编译器能捕捉语法错误,但那些潜伏在逻辑深处的"幽灵Bug"——内存泄漏、未初始化变量、数组越界——往往要等到运行时才暴露。CppCh…...
Go-sniffer高级用法指南:自定义过滤规则和协议扩展开发终极教程
Go-sniffer高级用法指南:自定义过滤规则和协议扩展开发终极教程 【免费下载链接】go-sniffer 项目地址: https://gitcode.com/gh_mirrors/go/go-sniffer Go-sniffer是一款功能强大的网络嗅探工具,专为开发者和运维人员设计,能够实时抓…...
为AI智能体构建持久化记忆系统:基于RAG与向量检索的实践
1. 项目概述:为AI智能体构建持久化记忆系统在AI智能体(AI Agent)的开发浪潮中,一个核心的痛点日益凸显:如何让智能体拥有持续、可靠的记忆能力?无论是基于Claude API、GPTs还是其他大语言模型构建的对话机器…...
WeChatMsg:如何用开源工具构建你的个人数字记忆库
WeChatMsg:如何用开源工具构建你的个人数字记忆库 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...
Pytorch图像去噪实战(七十三):ELK日志采集实战,集中分析接口异常、慢请求和用户上传问题
Pytorch图像去噪实战(七十三):ELK日志采集实战,集中分析接口异常、慢请求和用户上传问题 一、问题场景:日志散落在各个容器里,排查问题非常痛苦 图像去噪服务上线后,日志会越来越多: FastAPI访问日志 模型推理日志 Nginx访问日志 Worker任务日志 Celery错误日志 GPU异…...
4. 打破ASR技术瓶颈:Whisper-1模型原理、性能与落地实践
1. 引言 语音识别(Automatic Speech Recognition, ASR)是人工智能领域的核心技术方向之一,其历史可追溯至20世纪50年代贝尔实验室的Audrey系统——这一仅能识别10个英文数字的早期系统,标志着机器理解人类语音的开端。此后半个多…...
基于STM32的数控恒流源:从硬件闭环到软件PD调节的工程实践
1. 数控恒流源的核心需求与设计思路 第一次接触数控恒流源是在三年前的一个工业检测设备项目中,当时需要为传感器阵列提供精确的电流激励。传统模拟恒流方案遇到温度漂移问题,最终选择了STM32数控方案。这种方案最大的优势在于:硬件闭环保证响…...
抖音无水印视频下载终极指南:免费批量保存高清内容
抖音无水印视频下载终极指南:免费批量保存高清内容 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...
为VS Code集成GPT-4V视觉能力:VisualChatGPTStudio实战指南
1. 项目概述:当ChatGPT“睁开双眼”如果你和我一样,是个重度依赖ChatGPT进行编程、文档撰写和头脑风暴的开发者,那你一定体验过它的强大与局限。它能写出漂亮的代码片段,解释复杂的概念,但当你指着屏幕上的一个错误说“…...
ncmdumpGUI:解锁网易云音乐NCM文件格式的终极解决方案
ncmdumpGUI:解锁网易云音乐NCM文件格式的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式文件无法在其…...
