JAVA中的输入输出流

FileInputStream、FileOutputStream(字节流)

字节输入流InputStream主要方法:

read() :从此输入流中读取一个数据字节。

read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

read(byte[] b, int off, int len) :从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。

close()**:关闭此输入流并释放与该流关联的所有系统资源。**

字节输出流OutputStream主要方法:

write(byte[] b) :将 b.length 个字节从指定 byte 数组写入此文件输出流中。

write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

write(int b) :将指定字节写入此文件输出流。

close() :关闭此输入流并释放与该流关联的所有系统资源。

字节流的方式效率较低,不建议使用

public class IOTest {

public static void main(String[] args) throws IOException {

File file = new File("D:/test.txt");

write(file);

System.out.println(read(file));

}

public static void write(File file) throws IOException {

OutputStream os = new FileOutputStream(file, true);

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

// 写入文件

os.write(string.getBytes());

// 关闭流

os.close();

}

public static String read(File file) throws IOException {

InputStream in = new FileInputStream(file);

// 一次性取多少个字节

byte[] bytes = new byte[1024];

// 用来接收读取的字节数组

StringBuilder sb = new StringBuilder();

// 读取到的字节数组长度,为-1时表示没有数据

int length = 0;

// 循环取数据

while ((length = in.read(bytes)) != -1) {

// 将读取的内容转换成字符串

sb.append(new String(bytes, 0, length));

}

// 关闭流

in.close();

return sb.toString();

}

}

BufferedInputStream**、BufferedOutputStream(缓冲字节流)**

缓冲字节流是为高效率而设计的,真正的读写操作还是靠FileOutputStreamFileInputStream,所以其构造方法入参是这两个类的对象也就不奇怪了。

public class IOTest {

public static void write(File file) throws IOException {

// 缓冲字节流,提高了效率

BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream(file, true));

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

// 写入文件

bis.write(string.getBytes());

// 关闭流

bis.close();

}

public static String read(File file) throws IOException {

BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));

// 一次性取多少个字节

byte[] bytes = new byte[1024];

// 用来接收读取的字节数组

StringBuilder sb = new StringBuilder();

// 读取到的字节数组长度,为-1时表示没有数据

int length = 0;

// 循环取数据

while ((length = fis.read(bytes)) != -1) {

// 将读取的内容转换成字符串

sb.append(new String(bytes, 0, length));

}

// 关闭流

fis.close();

return sb.toString();

}

}

3、**InputStreamReader、OutputStreamWriter(字符流)**

字符流方法

字符输入流Reader主要方法:

read():读取单个字符。

read(char[] cbuf) :将字符读入数组。

read(char[] cbuf, int off, int len) : 将字符读入数组的某一部分。

read(CharBuffer target) :试图将字符读入指定的字符缓冲区。

flush() :刷新该流的缓冲。

close() :关闭此流,但要先刷新它。

字符输出流Writer主要方法:

write(char[] cbuf) :写入字符数组。

write(char[] cbuf, int off, int len) :写入字符数组的某一部分。

write(int c) :写入单个字符。

write(String str) :写入字符串。

write(String str, int off, int len) :写入字符串的某一部分。

flush() :刷新该流的缓冲。

close() :关闭此流,但要先刷新它。

另外,字符缓冲流还有两个独特的方法:

BufferedWriter类newLine() :写入一个行分隔符。这个方法会自动适配所在系统的行分隔符。

BufferedReader类readLine() :读取一个文本行。

字符流适用于文本文件的读写OutputStreamWriter类其实也是借助FileOutputStream类实现的,故其构造方法是FileOutputStream的对象

public class IOTest {

public static void write(File file) throws IOException {

// OutputStreamWriter可以显示指定字符集,否则使用默认字符集

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

osw.write(string);

osw.close();

}

public static String read(File file) throws IOException {

InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");

// 字符数组:一次读取多少个字符

char[] chars = new char[1024];

// 每次读取的字符数组先append到StringBuilder中

StringBuilder sb = new StringBuilder();

// 读取到的字符数组长度,为-1时表示没有数据

int length;

// 循环取数据

while ((length = isr.read(chars)) != -1) {

// 将读取的内容转换成字符串

sb.append(chars, 0, length);

}

// 关闭流

isr.close();

return sb.toString()

}

}

//缓冲字符流

public static void write(File file) throws IOException {

// BufferedWriter fw = new BufferedWriter(new OutputStreamWriter(new

// FileOutputStream(file, true), "UTF-8"));

// FileWriter可以大幅度简化代码

BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

bw.write(string);

bw.close();

}

public static String read(File file) throws IOException {

BufferedReader br = new BufferedReader(new FileReader(file));

// 用来接收读取的字节数组

StringBuilder sb = new StringBuilder();

// 按行读数据

String line;

// 循环取数据 readLine读取一行

while ((line = br.readLine()) != null) {

// 将读取的内容转换成字符串

sb.append(line);

}

// 关闭流

br.close();

return sb.toString();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis系列命令更新--Redis有序集合命令

Redis有序集合(sorted set) (1)说明: A、Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员;不同的是每个元素都会关联一个double类型的分数;redis正式通过分数…

MongoDB 文档存储

安装 下载: Download MongoDB Community Server | MongoDB 说明: 现在基本都安装的是4.4以后的版本。安装完成后使用 mongod 来查看是否安装成功 会输出一堆内容 而如果想要操作数据库,则需要安装一个工具,mongosh-2.2.12-x64.m…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 堆内存申请(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

微信小程序canvas 使用案例(一)

一、cavans 对象获取、上线文创建 1.wxml <!-- canvas.wxml --><canvas type"2d" id"myCanvas"></canvas> 2.js /*** 生命周期函数--监听页面加载*/onLoad(options) {const query wx.createSelectorQuery()query.select(#myCanvas).f…

mysql练习3

1.修改student 表中年龄(sage)字段属性&#xff0c;数据类型由int 改变为smallint 2.为Course表中Cno 课程号字段设置索引,并查看索引 3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引&#xff0c;索引名为SC_INDEX 4.创建一视图 stu info,查询全体学生的姓名&#…

安装好anaconda,打开jupyter notebook,新建 报500错

解决办法&#xff1a; 打开anaconda prompt 输入 jupyter --version 重新进入jupyter notebook&#xff1a; 可以成功进入进行代码编辑

建筑工程企业项目管理系统哪个好?试试企智汇工程项目管理系统

在建筑工程行业中&#xff0c;项目管理的复杂性和挑战性是众所周知的。随着项目规模的扩大和技术的不断进步&#xff0c;传统的管理方法已经难以满足现代建筑工程的需求。企智汇工程项目管理系统应运而生&#xff0c;为建筑工程企业提供了一个全面、智能、高效的解决方案。 一…

[mmdetection]Faster-RCNN模型断点训练方法

断电等问题时常发生&#xff0c;因此我们会对模型进行断点训练。 如mmdetection项目中的FasterRCNN模型训练时出现训练突然中断&#xff0c;我们将使用如下命令从中断的epochs继续训练。 首先我们来看看模型训练时会生成的的文件&#xff1a; 接下来我们将使用如下命令进行断…

【深大计算机系统(2)】实验一 实验环境配置与使用 附常用指令

目录 一、 实验目标&#xff1a; 二、实验环境与工件&#xff1a; 三、实验内容与步骤 1. 学习并熟悉Linux基本操作&#xff0c;按照要求创建用户。&#xff08;30分&#xff09; 2.新建用户主目录下创建子目录&#xff1a;gdbdebug&#xff0c;并进入gdbdebug子目录。将过程和…

Golang | Leetcode Golang题解之第241题为运算表达式设计优先级

题目&#xff1a; 题解&#xff1a; const addition, subtraction, multiplication -1, -2, -3func diffWaysToCompute(expression string) []int {ops : []int{}for i, n : 0, len(expression); i < n; {if unicode.IsDigit(rune(expression[i])) {x : 0for ; i < n &…

leetcode日记(47)螺旋矩阵Ⅱ

这题思路不难&#xff0c;就是找规律太难了。 我首先的思路是一行一行来&#xff0c;根据规律填入下一行的数组&#xff0c;第i行是由前i个数字&#xff08;n-2*i&#xff09;个增序数列后i个数字组成&#xff0c;后来觉得太难找规律了就换了一种思路。 思路大致是先计算出需…

googleTest 源码主线框架性分析

TDD&#xff0c;测试驱动开发&#xff0c;英文全称Test-Driven Development&#xff0c;简称TDD&#xff0c;是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码&#xff0c;然后只编写使测试通过的功能代码&#xff0c;通过测试来推…

go语言day16 runtime包 临界资源 sync包

深入理解Java虚拟机到底是什么_java虚拟机是什么-CSDN博客 Golang-100-Days/Day16-20(Go语言基础进阶)/day17_Go语言并发Goroutine.md at master rubyhan1314/Golang-100-Days GitHub runtime 类似jvm&#xff0c;runtime包也提供了垃圾回收功能&#xff0c;不同的是runtime…

Sleuth(Micrometer) +ZipKin分布式链路追踪的解析以及使用

1、用另一种场景来类比Sleuth和Zipkin的作用 我们来设想一个快递公司的物流追踪系统。设你在网上购买了一本书&#xff0c;当你的订单提交后&#xff0c;后台系统会生成一个唯一的订单号&#xff0c;这个订单号就相当于Sleuth中的Trace ID。你的订单会经过几个主要的处理阶段&…

3.5 查找和排序算法

大纲 算法基础 常用的表示算法的方法 算法的复杂度 查找 顺序查找、二分查找 哈希查找 真题 排序 插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 排序算法总结

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day4 重置版 全网最全最快

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会…

UniCAVE实现融合输出或多屏输出

介绍 CAVE沉浸式系统包含单主机多屏和多主机多屏两种系统架构。此文档主要介绍融合输出与单机多屏输出&#xff0c;这两种方式都属于单主机多屏。均以使用UniCAVE输出到前左右下为例。引用的Package为UniCAVE2019。 融合输出 实现原理 &#xff08;猜测&#xff09;是将多块…

2024春秋杯网络安全联赛夏季赛Crypto(AK)解题思路及用到的软件

2024春秋杯网络安全联赛夏季赛Crypto(AK) 2024春秋杯网络安全联赛夏季赛Crypto解题思路以及用到的软件 所有题用到的软件 1.vm(虚拟机kali)和Ubuntu&#xff0c;正常配置即可B站有很多。 2.Visual Studio Code(里面要配置python&#xff0c;crypto库和Sagemath数学软件系统S…

基于微信小程序+SpringBoot+Vue的青少年科普教学系统平台(带1w+文档)

基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完成信息处理&#xff0c;还缩短高校教师成果信息管理流程&#xff0c;使其系统化…

LINUX之MMC子系统分析

目录 1. 概念1.1 MMC卡1.2 SD卡1.3 SDIO 2. 总线协议2.1 协议2.2 一般协议2.3 写数据2.4 读数据2.5 卡模式2.5.1 SD卡模式2.5.2 eMMC模式 2.6 命令2.6.1 命令类2.6.2 详细命令 2.7 应答2.8 寄存器2.8.1 OCR2.8.2 CID2.8.3 CSD2.8.4 RCA2.8.5 扩展CSD 3. 关键结构3.1 struct sdh…