文件输入/输出流(I/O)
文章目录
- 前言
- 一、文件输入\输出流是什么?
- 二、使用方法
- 1.FileInputStream与FileOutputStream类
- 2.FileReader与FileWriter类
- 总结
前言
对于文章I/O(输入/输出流的概述),有了下文。这篇文章将具体详细展述如何向磁盘文件中输入数据,或者读取磁盘文件中的信息。这样就不会在java程序运行结束后,数据消失了。
一、文件输入\输入流是什么?
文件输入\输出流,是与指定的文件建立连接,将需要的数据永久保存到文件中,避免程序结束时的数据消失(当然也可以从文件中读取信息)。
二、使用方法
需要导入 java.io包
1.FileInputStream与FileOutputStream类
构造方法:
File file = new File("word.txt");
//先创建一个文件对象
//实例化字节输入输出流时,引入参数File对象,实现对该File对象进行操作
new FileOutputStream(file);
//第二布尔参数为true,该流输入文件信息时,文件之前的信息不会消失
new FileOutputStream(file,true);new FileInputStream(file);
使用时有三点需要注意:
(1)字节输入\输出流的使用过程中需要创建byte字节数组来读存数据的。
(2)需要使用try-catch-finally语句抛出异常
(3)需要使用close()方法关闭输入\输出流
实操展示:
项目:创建一个word.txt文件,使用FileOutputStream对象将文字输入进txt文件。同时使用FileInputStream对象将txt文件中存有的文字数据返回至终端。
import java.io.*;public class PutStream{public static void main(String[] args) {File file = new File("word.txt");//输出数据到文件中FileOutputStream outputStream = null;try{outputStream = new FileOutputStream(file);String string = "君不见高堂明镜悲白发,朝如青丝暮成雪";byte b[] = string.getBytes();//字符串转换为字节数组outputStream.write(b);}catch(IOException e){e.printStackTrace();}finally{if(outputStream!=null){try{outputStream.close();}catch(IOException e){e.printStackTrace();}}} //读取数据FileInputStream inputStream = null;try {inputStream = new FileInputStream(file);byte b2[] = new byte[1024]; int len = inputStream.read(b2);//inputStream.read()返回int值文件中的字节数,len为文件字节流的字节数System.out.println("文件中的数据是:"+new String(b2,0,len));} catch (IOException e) {e.printStackTrace();}finally{if(inputStream!=null){ try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
}
(1)若File对象创建时,没有对应的"word.txt",则会自动生成一个文件。
(2)实例化FileOutputStream和FileInputStream对象时需要抛出IOException。
(3)FileOutputStream对象write(byte[]),将byte数组内容写入到文件中。字符串对象通过getBytes()方法转化为字节数组储存。
(4)FileInputStream对象read(byte[]),将读取文件的字节流保存在byte数组对象中,返回int值为文件字节流的字节长度。实例化new String(byte[],int1,int2) 为byte[]数组实例化为字符串,实例化长度从int1到int2。
(5)在Finally代码块中的close()方法,使用过程中需要使用try-catch语句抛出IOException异常。
运行结果: 
如图,创建了一个word.txt,永久保存了输入的信息,并且将里面的信息也反馈到控制台中。
2.FileReader与FileWriter类
构造方法:
File file = new File("word.txt");
//先创建一个文件对象
//实例化字符输入输出流时,引入参数File对象,实现对该File对象进行操作
new FileWriter(file);
//第二布尔参数为true,该流输入文件信息时,文件之前的信息不会消失
new FileWriter(file,ture);new FileReader(file);
使用时有三点需要注意:
(1)字符输出流的使用过程中需要创建char字节数组来读取数据的。
(2)需要使用try-catch语句抛出异常
(3)需要使用close()方法关闭输入\输出流(不需要抛出异常)
实操展示:
项目:创建一个word.txt文件,使用FileWriter对象将文字输入进txt文件。同时使用FileReader对象将txt文件中存有的文字数据返回至终端。
import java.io.*;public class PutStream{public static void main(String[] args) {File file = new File("word.txt");//输出数据到文件中FileWriter writer = null;try{writer= new FileWriter(file);//字符串不用转换类型,直接写入即可String string = "人生得意须尽欢,莫使金樽空对月"; writer.write(string);writer.close(); //字符流直接关闭就行,不需要try-catch抛出异常}catch(IOException e){e.printStackTrace();}//读取数据FileReader reader = null;try {reader = new FileReader(file);//需要使用的是char字符数组来保存,读取的文件数据char b2[] = new char[1024];int len = reader.read(b2);System.out.println("文件中的数据是:"+new String(b2,0,len));reader.close(); //直接关闭读取流} catch (IOException e) {e.printStackTrace();}}
}
(1)若File对象创建时,没有对应的"word.txt",则会自动生成一个文件。
(2)实例化FileWriter和FileReader对象时需要抛出IOException。
(3)FileWriter对象write(String),将字符串内容写入到文件中。
(4)FileInputStream对象read(char[]),将读取文件的字节流保存在char数组对象中,返回int值为文件字节流的字节长度。实例化new String(char[],int1,int2) 为char[]数组实例化为字符串,实例化长度从int1到int2。
(5)close()方法,在最后处关闭数据流即可。
总结
以上就是I\O中要讲的字节输入输出流,字符输入输出流的使用方法了,本文仅仅简单介绍了FileInputStream,FileOutputStream,FileReader,FileWriter的使用,而I\O提供了大量能使我们快速便捷地处理文件数据存读的函数和方法。
相关文章:
文件输入/输出流(I/O)
文章目录 前言一、文件输入\输出流是什么?二、使用方法 1.FileInputStream与FileOutputStream类2.FileReader与FileWriter类总结 前言 对于文章I/O(输入/输出流的概述),有了下文。这篇文章将具体详细展述如何向磁盘文件中输入数据,或者读取磁…...
docker,schedule job和environment variables三者的含义与区别
这三个概念在软件开发和部署中扮演着不同的角色: Docker一般长这样:superlifestyle/sscp-api Schedule Job一般长这样:recorrect_ocr_receipt_status 、Sync2D365 Environment Variables一般长这样:D365_BATCH_OPERATION_SIZE ima…...
90天玩转Python—16—基础知识篇:面向对象知识详解
90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…...
python 标准库之openpyxl的常规操作
目录 openpyxl(Excel文件处理模块) 读sheet 读sheet中单元格 合并单元格 openpyxl模块基本用法 安装方法 基本使用 读取Excel文档 (一)获取工作表 (二)获取单元格 (三)获取…...
90天玩转Python—12—基础知识篇:Python自动化操作Email:发送邮件、收邮件与邮箱客户端操作全解析
90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…...
利用lidar_align来进行lidar和imu标定
文章目录 下载并安装lidar_align安装nlopt迁移NLOPTConfig.cmake修改loader.cpp文件编译并运行 下载并安装lidar_align mkdir -p lidar_align/src cd lidar_align/src git clone https://github.com/ethz-asl/lidar_align.git安装nlopt git clone http://github.com/steven…...
牛客NC93 设计LRU缓存结构【hard 链表,Map Java】
题目 题目链接: https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点,尾节点放最老的数据,没次移除尾巴节点本地考察链表的新增,删除,移动节点参考答案Java im…...
机器学习和深度学习 -- 李宏毅(笔记与个人理解1-6)
机器学习和深度学习教程 – 李宏毅(笔记与个人理解) day1 课程内容 什么是机器学习 找函数关键技术(深度学习) 函数 – 类神经网络来表示 ;输入输出可以是 向量或者矩阵等如何找到函数: supervised Lear…...
低功耗全极霍尔开关芯片 D02,磁性开关点精确,对工艺和温度变化不敏感
1、概述 D02 是一款低功耗全极霍尔开关,用于检测施加的磁通量密度,并提供一个数字输出,该输出指示所感测磁通量幅度的当前状态。这些应用的一个例子是翻盖手机中的 ON/OFF 开关。微功耗设计特别适合电池供电系统,如手机或笔记本电…...
初识--数据结构
什么是数据结构?我们为什么要学习数据结构呢....一系列的问题就促使我们不得不了解数据结构。我们不禁要问了,学习C语言不就够了吗?为什么还要学习数据结构呢?这是因为:数据结构能够解决C语言解决不了的问题࿰…...
人工智能前沿成科技竞争新高地
以下文章来源:经济参考报 近日,首届中国具身智能大会(CEAI 2024)在上海举行。作为人工智能领域的前沿热点,具身智能正逐步走进现实,成为当前全球科技竞争的新高地、未来产业的新赛道、经济发展的新引擎。 “…...
【算法刷题day23】Leetcode:669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
文章目录 Leetcode 669. 修剪二叉搜索树解题思路代码总结 Leetcode 108. 将有序数组转换为二叉搜索树解题思路代码总结 Leetcode 538. 把二叉搜索树转换为累加树解题思路代码总结 草稿图网站 java的Deque Leetcode 669. 修剪二叉搜索树 题目:669. 修剪二叉搜索树 解…...
设计一个会议管理系统100问?
会议管理系统的基本功能有哪些?如何确保会议管理系统的安全性?会议管理系统可以支持多少种不同类型的会议?是否有权限管理功能?是否支持会议室预订功能?会议管理系统可以导入外部参与者信息吗?是否支持多种…...
一文搞懂BI、ERP、MES、SCM、PLM、CRM、WMS、APS、SCADA、QMS
在企业信息化数字化过程中我们经常遇到很多系统,比如:MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM、BI,这些都是什么系统?有什么功能和作用?它们之间的关系是怎样的? 今天就一文简单分享。 术语 …...
全量知识系统 程序详细设计 之 先验逻辑-实现:从“平凡”回到“平凡” (QA 百度搜索)
Q1. 思考:数学中的平凡,和程序中的平凡(比如POJO)、语言中的平凡(比如纯文本),数据中的平凡(比如 Number)。因为我设计中的全知系统将设计的三个方面刻画为语言设计、程序…...
注解(Annotation) --java学习笔记
注解 就是Java代码里的特殊标记,比如:Override、Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处 自定义注解 就是自己定义注解 自定义注解到底该怎么写:…...
uniapp 小程序获取WiFi列表
<template><view ><button click"getWifiList">获取WiFi列表</button><scroll-view:scroll-top"scrollTop"scroll-yclass"content-pop"><viewclass"itemInfo"v-for"(item, index) in wifiList&…...
数据可视化-ECharts Html项目实战(11)
在之前的文章中,我们学习了如何在ECharts中特殊图表的双y图以及自定义形状词云图。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 数据可视化-ECh…...
【MySQL数据库 | 第二十四篇】Limit语句的性能问题和调优策略
前言: MySQL作为最流行的关系型数据库管理系统之一,被广泛应用于各种规模和类型的应用程序中。其强大的功能和灵活的查询语言使得开发人员能够高效地执行各种数据操作和分析。 然而,在处理大量数据或复杂查询时,一些开发人员可能…...
【数据结构】两两交换链表 复制带随机指针的链表
问题描述1 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 求解 使用一个栈S来存储相邻两个节点即可 /*** Definition for…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
Selenium 查找页面元素的方式
Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式: 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...
虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)
当我们网关配置好了,DNS也配置好了,最后在虚拟机里还是无法访问百度的网址。 第一种情况: 我们先考虑一下,网关的IP是否和虚拟机编辑器里的IP一样不,如果不一样需要更改一下,因为我们访问百度需要从物理机…...
LeetCode - 148. 排序链表
目录 题目 思路 基本情况检查 复杂度分析 执行示例 读者可能出的错误 正确的写法 题目 148. 排序链表 - 力扣(LeetCode) 思路 链表归并排序采用"分治"的策略,主要分为三个步骤: 分割:将链表从中间…...
在MobaXterm 打开图形工具firefox
目录 1.安装 X 服务器软件 2.服务器端配置 3.客户端配置 4.安装并打开 Firefox 1.安装 X 服务器软件 Centos系统 # CentOS/RHEL 7 及之前(YUM) sudo yum install xorg-x11-server-Xorg xorg-x11-xinit xorg-x11-utils mesa-libEGL mesa-libGL mesa-…...
