Java IO学习--(五)字节和字符数组

内容列表

  • 从InputStream或者Reader中读入数组
  • 从OutputStream或者Writer中写数组

在java中常用字节和字符数组在应用中临时存储数据。而这些数组又是通常的数据读取来源或者写入目的地。如果你需要在程序运行时需要大量读取文件里的内容,那么你也可以把一个文件加载到数组中。当然你可以通过直接指定索引来读取这些数组。但如果设计成为从InputStream或者Reader,而不是从数组中读取某些数据的话,你会用什么组件呢?

 

 InputStream  Reader中读取数组

用ByteArrayInputStream或者CharArrayReader封装字节或者字符数组从数组中读取数据。通过这种方式字节和字符就可以以数组的形式读出了。

样例如下:

01byte[] bytes = new byte[1024];
02 
03 
04 
05//把数据写入字节数组...
06 
07 
08 
09InputStream input = new ByteArrayInputStream(bytes);
10 
11 
12 
13//读取第一个字节
14 
15int data = input.read();
16 
17while(data != -1) {
18 
19//操作数据
20 
21 
22 
23//读下一个字节
24 
25data = input.read();
26 
27}

以同样的方式也可以用于读取字符数组,只要把字符数组封装在CharArrayReader上就行了。

通过 OutputStream 或者 Writer写数组

同样,也可以把数据写到ByteArrayOutputStream或者CharArrayWriter中。你只需要创建ByteArrayOutputStream或者CharArrayWriter,把数据写入,就像写其它的流一样。当所有的数据都写进去了以后,只要调用toByteArray()或者toCharArray,所有写入的数据就会以数组的形式返回。

样例如下:

1OutputStream output = new ByteArrayOutputStream();
2 
3 
4 
5output.write("This text is converted to bytes".toBytes("UTF-8"));
6 
7 
8 
9byte[] bytes = output.toByteArray();

写字符数组也和此例子类似。只要把字符数组封装在CharArrayWriter上就可以了。

转载于:https://www.cnblogs.com/eer123/p/8566894.html

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

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

相关文章

蓝桥杯第六届C语言B——积分之谜

一开始想口算的&#xff0c;后来发现高估自己了&#xff0c;仔细一想还是暴力枚举简单一些。 源码如下: #include<iostream> using namespace std; int main() {int a,b,c;for(a1;a<105;a){for(b1;b<42;b){for(c1;c<315;c){int n13*a7*bc;int n24*a10*bc;if(n1…

openwrt 格式化_OPENWRT扩展系统到U盘

由于路由的ROM不大&#xff0c;装完OPENWRT之后基本上就所剩无几了。为了更方便的折腾&#xff0c;就需要使用U盘扩大系统的容量。下面就分享一下我的扩容过程。事先说明&#xff0c;由于我是按着703n的OpenWrt配置二:U盘扩容的教程来的&#xff0c;所以基本上代码会和上头的差…

Django model 字段类型及选项解析(一)

字段类型选择&#xff1a;AutoField(Field)- int自增列&#xff0c;必须填入参数 primary_keyTrueBigAutoField(AutoField)- bigint自增列&#xff0c;必须填入参数 primary_keyTrue注&#xff1a;当model中如果没有自增列&#xff0c;则自动会创建一个列名为id的列from django…

C++中引用符的使用

初学数据结构的时候&#xff0c;大家可能经常可以看到在线性表的一些操作函数中会有**&**的使用&#xff0c;初学者或者跨考考生或许会对这一点的使用存在着一段不短时间的疑惑。今天就这一点展开简单的描述。 实质上&#xff0c;在C中引用符号的使用大家可以看成是c中指针…

springboot如何对本地数据库增删改查_SpringBoot整合Mybatis实现数据库增删改查

接下来我们需要在application.properties配置文件中配置Durid数据库连接池。本机需安装mysql数据库&#xff0c;一下配置为小编本机的数据库配置&#xff0c;数据库名为test,用户名为root,密码为123456。spring.datasource.typecom.alibaba.druid.pool.DruidDataSourcespring.d…

UOJ.35.[模板]后缀排序(后缀数组 倍增)

题目链接 论找到一个好的教程的正确性。。后缀数组 下标从1编号&#xff1a; //299ms 2560kb #include <cstdio> #include <cstring> #include <algorithm> const int N1e55;int n,sa[N],rk[N],sa2[N],tm[N],ht[N]; char s[N];void Get_SA() {int *xrk,*ysa2…

linux 使cpu使用率升高_关于linux系统CPU篇---gt;CPU使用率升高

1.CPU使用率为单位时间内CPU使用情况的统计&#xff0c;以百分比的方式展示。LINUX作为一个多任务操作系统&#xff0c;将每个CPU的时间划分为很短的时间片&#xff0c;再通过调度器轮流分配给各个任务使用&#xff0c;因此造成多任务同时运行的错觉2.如何查看CPU使用率&#x…

软件测试之逻辑覆盖测试理论总结(白话文)

1.语句覆盖 语句覆盖就是所有可执行的语句都可以得到一次执行。注意可执行那三个字就可以&#xff0c;因为可能有的判定条件比较狗&#xff0c;它下面的分支的语句无论如何都不会执行。 例如这随手就能写出一个: if(x>100&&x<100) {x100; }当然实际上一般不会有…

datatables 的导出button自定义

1.dom 方式 $(#myTable).DataTable( {dom: Bfrtip,buttons: [copy, excel, pdf] } ); 2.手动插入 var table $(#example).DataTable( {buttons: [copy, excel, pdf] } );table.buttons().container().appendTo( $(.col-sm-6:eq(0), table.table().container() ) ); $(#myTable…

excel显著性检验_#如何用excel做anova分析#用excel做显著性分析

如何用Excel做方差分析&#xff1f;&#xff1f;方差分析的步骤&#xff1a;(1)分别计算行与列平方和。行平方与组差相似&#xff0c;是每值与总体均值的离差平方和&#xff0c;列平方和是每列的均值与总体均值的离差平方和。(2)总的平方和的计算与单因素方差分析一样&#xff…

软件测试之控制流图以及环形复杂度独立路径求解问题

首先需要明确的是&#xff0c;控制流图并不等于流程图&#xff0c;可以理解为控制流图的出现是为了后续的环形复杂度的计算和写出独立路径和配以相应的测试用例。 所以控制流图是核心&#xff0c;画图的时候务必谨慎再谨慎&#xff0c;要不然可能你后面的全部崩盘。 控制流图考…

MS Code 使用 TFVC 插件时遇到的问题

使用 TFVC 插件&#xff0c; 在 singin 时提示 &#xff1a; “It appears you have configured a non-English version of the TF executable. Please ensure an English version is properly configured.” 这是 Code 的问题&#xff0c; 官方解释&#xff1a; https://gith…

server的自增主键返回函数 sql_SQL自增主键函数

自动生成编码的主键函数比如CRM00001CRM00002CRM00003create table IntKey(KeyChar char(10))gocreate function GetKey()returns char(10)asbegindeclare KeyValue intdeclare KeyReturn varchar(20)set KeyValue cast(isnull((select max(KeyChar) from IntKey),0) as int) …

软件测试之黑盒测试-等价类划分法

首先&#xff0c;明确等价类分为有效等价类和无效等价类两种&#xff0c;一般无效等价类都是根据有效等价类写出来的。为了严谨&#xff0c;在白话文之前还是附个定义吧&#xff0c;以免误人子弟。 说白了&#xff0c;有效等价类就是有效输入数据的集合&#xff0c;无效等价类…

PM2.5环境检测系统的设计与分析

PM2.5环境检测系统的设计与分析 摘要&#xff1a; 大气颗粒物污染对人类健康和生态环境造成了很大的影响&#xff0c;这让人们逐渐重视起对细颗粒物PM2.5检测技术的研究。本文阐述了PM2.5浓度检测的五种方法&#xff0c;在对上述各方法分析总结的基础上针对日常生活中PM2.5污染…

关于C和C++中for循环对于中间逗号的判定

for&#xff08;&#xff1b;A,B,;&#xff09; 虽然学了好久C语言了&#xff0c;但是自己还真是一直没有注意过for循环中间有逗号表达式的时候判定&#xff0c;之前一直都是以为A和B同时满足了才会进行执行。学编译原理&#xff0c;深入理解一些语言的结构的时候才发现了这一点…

c语言中的取模运算符_C语言除法算法和取模运算的实现(多种算法,多种思路)...

对计算机来说&#xff0c;除法与求模是整数算术运算中最复杂的运算。相对其他运算(如加法与减法)来说&#xff0c;这两种算法的执行速度非常慢。例如&#xff0c;ARM 硬件上不支持除法指令&#xff0c;编译器调用 C 库函数来实现除法运算。直接利用 C 库函数中的标准整数除法程…

【CF603E】Pastoral Oddities cdq分治+并查集

【CF603E】Pastoral Oddities 题意&#xff1a;有n个点&#xff0c;依次加入m条边权为$l_i$的无向边&#xff0c;每次加入后询问&#xff1a;当前图是否存在一个生成子图&#xff0c;满足所有点的度数都是奇数。如果有&#xff0c;输出这个生成子图中边权最大的边的权值最小可能…

关于C/C++中函数参数传递的规则

f&#xff08;A,B,C&#xff09;&#xff1b; 在编译程序中&#xff0c;对函数参数传递的处理是由右向左进行的。 因此&#xff0c;先传递的是最右边的参数的值。这个结论在日常使用的时候其实也很难发现有什么具体的区别&#xff0c;但是在编译原理中或者一些偏向于理论的考试…

sql如何遍历几百万的表_SQL Server遍历表中记录的2种方法(使用表变量和游标)

SQL Server遍历表一般都要用到游标&#xff0c;SQL Server中可以很容易的用游标实现循环&#xff0c;实现SQL Server遍历表中记录。本文将介绍利用使用表变量和游标实现数据库中表的遍历。表变量来实现表的遍历以下代码中&#xff0c;代码块之间的差异已经用灰色的背景标记。DE…