文件输入/输出流(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…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...