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

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中针对InputOutput提供了2个抽象类

InputStream :输入流,把文件数据读取到内存

OutputStream:输出流,把数据从内存输出到文件中

在系统中有很多种的文件类型一般分为 文本文件二进制文件

Java分别对这两种文件类型提供了相应的方法对文件进行读写。

image-20230307001104511

InputStream

常见的方法

intread()读取一个字节的数据,读完返回-1
intread(byte[] b)最多读取b.length个字节的数据
intread(byte[] b,int off,int len)最多读取len-off个字节数据
voidclose()关闭字节流

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

voidwrite(int b)写入要给字节的数据
voidwrite(byte[]b)将b 这个字符数组的全部数据写到os中
intwrite(byte[]b,int off,int len)将b数组中从off开始把数据写到os中,一个写len个
voidclose()关闭流
voidflush()刷新缓冲区,将数据从缓冲区写入文件

在计算机系统中,硬件之间的传输速度是很慢的,大量的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类的了解&#xff0c;但是file类…...

LeetCode - 1653 使字符串平衡的最少删除次数

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1653. 使字符串平衡的最少删除次数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个字符串 s &#xff0c;它仅包含字符 a 和 b​​​​ 。 你可以删除 s 中任意数目的字符&#xff0c;使得 …...

【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…...

《超导电子技术及其应用》学习日志(二)

约瑟夫森效应 约瑟夫森理论 约瑟夫森方程 &#xff08;1&#xff09;每一个库柏对都可视为质量为2m、电量为2e的复合载流子&#xff0c;定向运动速度v就是库柏相对质心的速度。处于超导态的库柏对凝聚于同一量子态&#xff0c;运载电流时具有完全相同的动量P。用微观波函数来…...

微信小程序this指向问题

前言 最近在开发微信小程序时不时会遇到一个很奇怪的问题&#xff0c;有些情况下用 this.setData 可以改变视图显示&#xff0c;有些情况下使用 this.setData 无效&#xff0c;这又是为什么呢&#xff1f; 问题描述 在解释这个问题前&#xff0c;我们先来看两段代码&#xff1…...

【报错】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开学第一课

许多的小伙伴学编程语言其实是因为玩游戏&#xff0c;玩着玩着就想写游戏了&#xff0c;于是开始学习c学习C#学习java&#xff0c;但相比之下C#的操作会更加容易&#xff0c;所以就开始学习unity来编游戏了。这里就就算是unity开学第一课啦-unity的安装配置和第一个游戏。 文章…...

Elsevier上传LaTeX 修改稿踩坑

背景 千辛万苦修改完论文&#xff0c;结果发现要求上传可编辑文件&#xff0c;tex上传真的太难了&#xff0c;一堆坑&#xff0c;尤其是编译错误&#xff0c;要等系统创建pdf后才能找到。中间还打了北京的客服电话&#xff0c;结果他们那边并不懂相关的东西。说latex是第三方公…...

秒懂算法 | 搜索基础

本篇介绍了BFS和DFS的概念、性质、模板代码。 01、搜索简介 搜索,就是查找解空间,它是“暴力法”算法思想的具体实现。 暴力法(Brute force,又译为蛮力法):把所有可能的情况都罗列出来,然后逐一检查,从中找到答案。这种方法简单、直接,不玩花样,利用了计算机强大的…...

Flutter 自定义今日头条版本的组件,及底部按钮切换静态样式

这里写目录标题1. 左右滑动实现标题切换&#xff0c;点击标题也可实现切换&#xff1b;2. 自定义KeepAliveWrapper 缓存页面&#xff1b;2.2 使用3. 底部导航切换&#xff1b;4. 自定义中间大导航&#xff1b;5.AppBar自定义顶部按钮图标、颜色6. Tabbar TabBarView实现类似头条…...

SpringBoot学习笔记(二)配置文件

1、配置文件SpringBoot使用一个全局的配置文件&#xff0c;配置文件名是固定的&#xff1b;application.propertiesapplication.yml配置文件的作用&#xff1a;修改SpringBoot自动配置的默认值&#xff1b;SpringBoot在底层都给我们自动配置好&#xff1b;YAML&#xff1a;以数…...

09说说乐观锁和悲观锁

乐观锁和悲观锁是在并发编程中经常用到的两种锁机制。悲观锁是指在访问共享资源之前&#xff0c;会先加锁&#xff0c;以防止其他线程修改该资源&#xff0c;从而保证数据的一致性和完整性。在使用悲观锁时&#xff0c;如果一个线程已经占用了该资源&#xff0c;那么其他线程只…...

【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 游记

清华校赛&#xff0c;战火重燃 原文链接 宣传图 上周四同学在洛谷无意间看到了宣传图&#xff0c;当时很有感触。不知觉间&#xff0c;又是一年春&#xff0c;又是一场触动心弦的 THUPC 了。 周五的团建过于有趣&#xff0c;致使我完全将 THUPC 抛之脑后了。 周日上午被省选…...

Linux - 磁盘I/O性能评估

文章目录概述RAID文件系统与裸设备的对比磁盘I/O性能评判标准常用命令“sar –d”命令组合“iostat –d”命令组合“iostat –x”单独统计某个磁盘的I/O“vmstat –d”命令组合小结概述 RAID 可以根据应用的不同&#xff0c;选择不同的RAID方式 如果一个应用经常有大量的读操…...

计算机网络--网络基础

目录 一.互联网的组成 ​编辑 1.互联网的边缘部分 1.1客户-服务器方式 1.2对等连接方式 ​编辑 2.互联网的核心部分 2.1电路交换 2.2分组交换 2.3报文交换 二.计算机网络的类别 1.按网络的作用范围进行分类 2.按网络的使用者进行分类 3.用来把用户接入互联…...

Gin 接口超时控制

文章目录1.Gin 的 Middleware2.gin-contrib/timeout3.小结参考文献API 是现代应用程序中的重要组成部分&#xff0c;可以用于提供数据和功能&#xff0c;供客户端应用程序访问。由于网络不稳定、服务器负载、网络拥堵等因素&#xff0c;API 请求可能会花费较长时间。这可能导致…...

1.C#与.NET简介

目录 一、C#语言及其特点 二、C#与.NET Framework/.NET Core关系 三、C#应用开发 四、案例展示 五、学习环境 一、C#语言及其特点 C#是美国微软公司发布的一种面向对象的&#xff0c;运行于 .NET Framework 和 .NET Core &#xff08;完全开源&#xff0c;跨平台&#xff…...

OpenAI CTO、吴恩达夫人……AI 领域值得关注的「她」力量,个个都是女强人

内容一览&#xff1a; 「她时代」来临&#xff0c;一些有着强大信念与热情的女性&#xff0c;纷纷投身至 AI 领域&#xff0c;成为不可或缺的存在与力量。值此国际妇女节到来之际&#xff0c;HyperAI超神经盘点了领域内令人印象深刻的杰出的女性代表。 关键词&#xff1a;国际妇…...

[ 网络 ] 应用层协议 —— HTTP协议

目录 1.HTTP协议 1.1URL urlencode和urldecode 2. HTTP协议格式 HTTP请求 HTTP响应 3.告知服务器意图的HTTP方法 GET&#xff1a;获取资源 POST&#xff1a;传输实体主体 GET和POST的区别 使用Cookie的状态管理 4.返回结果的HTTP状态码 状态码告知从服务器端返回的…...

Spring Boot 整合 Redisson 缓存性能客户端(2023-03-06)

Spring Boot 整合 Redisson 缓存 (官网) 介绍: Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, Sorte…...

【C和C++】输出100内能够被13整除的数,取模判断方法

目录 前言基础概念重温整除例子小知识点收尾前言 在软件行业已经有快十年,技术虽然一般般,但是足够应付和解决编程入门的相关问题! 都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助! 为什么要写收费专栏,其实原因很简单,时间就是金钱(…...

STC8单片机基于开源库读取DS18B20数据例程

STC8单片机基于开源库读取DS18B20数据例程 📍开源库FwLib_STC8 Github地址:https://github.com/IOsetting/FwLib_STC8📌STC官方STC8库函数资源:https://www.stcai.com/khs🎉本次利用FwLib_STC8库读取DS18B20,由于该开源库是基于VSCode编写,默认使用的是SDCC编译器,在…...

计算机专业毕业设计基于Spring Boot 学生在线考试系统

目录 一、学生端 1.1 登录 1.2 注册 1.3 学生首页 1.4 学生查看任务中心的试卷&#xff08;已答卷/未答卷&#xff09; 1.5 学生查看固定试卷以及开始做题 1.6 学生查看时段试卷以及开始做题 1.7 学生查看试卷中心 1.8 学生查看考试记录以及查看试卷 1.9 学生查看…...

【读书笔记】《深入浅出数据分析》第八章 启发法

目录一&#xff0c;什么是启发法&#xff1f;1&#xff0c;那什么是启发法&#xff1f;2&#xff0c;心理学上对启发法定义二&#xff0c;活动分析1&#xff0c;如何去分析活动效果呢&#xff1f;1.1 活动前期&#xff08;活动前1-2周&#xff09;1.2 活动中期1.3 活动结束一&a…...

英飞凌Tricore实战系列导读

本文框架 1.系列概述1.1 外设理论及应用介绍1.2 基于TC3xx的MCAL各外设配置开发1.3 基于TC3xx的Davinci工程开发1.4 项目中问题排查经验分享1.5 其他相关话题分享2. 目前已发布系列文章汇总1.系列概述 英飞凌TC3xx以其强大的性能,扩展性,存储及安全性能在汽车电子中扮演着越…...

做数据分析有前景吗?

当然有前景的。 每个行业都有发展前景&#xff0c;只是看你自身的技能情况或者关系人脉、软实力方面是否到位&#xff0c;不同的行业要求不一样。作为数据分析领域而言&#xff0c;属于IT行业&#xff0c;看的是你的专业技能&#xff1b;只要你技能过硬&#xff0c;就能在行业…...

Rust Web入门(六):服务器端web应用

本教程笔记来自 杨旭老师的 rust web 全栈教程&#xff0c;链接如下&#xff1a; https://www.bilibili.com/video/BV1RP4y1G7KF?p1&vd_source8595fbbf160cc11a0cc07cadacf22951 学习 Rust Web 需要学习 rust 的前置知识可以学习杨旭老师的另一门教程 https://www.bili…...

1.特定领域知识图谱知识融合方案(实体对齐):金融产业产业知识图谱-基于内容匹配和图模型的品牌知识链指

1 引言 供应链金融是一种围绕经营关系,以核心企业为依托,针对中小企业的新型金融服务。如何精准地还原企业间的经营关系,是供应链金融的关键所在。知识图谱是描绘实体间关系的网络结构,对于挖掘企业关系有重要意义。在真实场景中,仅有企业与用户的微观知识对于还原经营关系…...

前端基础语法合集

JS语法基础1-注释//单行注释/*......*/多行注释2-分号&#xff1b;用作分割javascript语句&#xff0c;可以省略。3-变量定义定义变量使用varvar a;//声明变量 var a100;//声明变量并赋值 var b,c;//声明多个变量 var d20;bd1;cb1;//一行多条语句要用;分割4-数据类型判断该变量…...

网站做百科/公司做网络推广怎么做

点击下载&#xff1a;多功能导航Demo.rar 点击下载&#xff1a;发一个选项卡动态增删的效果.rar 点击下载&#xff1a;仿yahoo的特色服务内容切换效果.rar 点击下载&#xff1a;给图片加上边框[1].(仿胶卷).rar 点击下载&#xff1a;国外网站的一个效果.rar 点击下载&#xff1…...

电气工程专业毕业设计代做网站/宁波seo运营推广平台排名

前端开发中我们经常会遇到跨域请求的情况&#xff0c;处理跨域请求方式很多&#xff0c;特整理如下&#xff1a; 浏览器的同源策略 ​ 提到跨域不能不先说一下”同源策略”。 同源策略是客户端脚本&#xff08;尤其是Javascript&#xff09;的重要的安全度量标准。 ​ 何为同源…...

wordpress 文章 收藏/百度客服人工电话24

1、动机 论文中多次提到使用高斯核函数计算距离,虽然学过高数,但是现在我已经忘完了,于是开始慢慢看起来 2、理解 定义 所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 …...

网站开发的公司/英文seo兼职

看起来float_format对na_rep不起作用.但是,如果将函数传递给float_format,有条件地处理NaN以及所需的float格式,则可以解决此问题&#xff1a;>>> dfGroup Data0 A 1.22251 A NaN再现您的问题&#xff1a;>>> out StringIO()>>> df.to_html(out,na…...

做网站用什么电脑配置/公司域名注册步骤

1) 创建接口项目和实现类项目&#xff1b; 编写接口&#xff0c;编写实现类。 接口类库 namespace MyIBLL {public interface IUserBll{bool Check(string username, string pwd);void AddNew(string username, string pwd);} } 实现接口类库 namespace MyBLLImpl {public cla…...

做网站多久能排靠前/百度网盘网页版登录首页

使用图像编程这一章来了解一下我们可以使用图片来作些什么事情.一幅图胜过千言万语,在wxWidgets,工具条,树形控件,notebooks,按钮,Html窗口和特定的绘画代码中,都会用到图片.有时候它们还会在不可见的地方发挥作用,比如我们可以用它来创建双缓冲区以避免闪烁.这一章里,我们会接…...