Java学习总结:46(内存流)
内存流
在Java中,针对内存操作提供了以下两组类:
- 字节内存流:ByteArrayInputStream(内存字节输入流)、ByteArrayOutputStream(内存字节输出流);
- 字符内存流:CharArrayReader(内存字符输入流)、CharArrayWriter(内存字符输出流)。
这两者的唯一区别就在于操作数据类型上,字节内存流使用byte数据类型,而字符内存流操作则使用char数据类型,但是他们的基本结构相同,博主着重讲字节内存流的使用。
字节内存流定义的构造方法如下:
- ByteArrayInputStream类构造:public ByteArrayInputStream(byte[] buf);
- ByteArrayOutputStream类构造:public ByteArrayOutputStream()。
内存流的操作实质上就是将数据首先保存到内存中,然后利用IO流操作进行单个字节的处理。
例:实现一个小写字母转大写字母的操作
- 本程序不使用String类中提供的toUpperCase()方法,而是利用IO操作,将每一个字节进行大写字母的转换;
- 为了方便地实现字母的转大写操作(避免不必要的字符也被转换)可以借助Character包装类的方法。
转小写字母:public static char toLowerCase(char ch);
转小写字母(利用字母编码转换):public static int toLowerCase(int codePoint);
转大写字母:public static char toUpperCase(char ch);
转大写字母(利用字母编码操作):public static int toUpperCase(int codePoint)。
package Project.Study.TMemoryStream;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;public class Test1 {public static void main(String[]args)throws Exception{String str="Hello World!!!";//需要转换的字符串//本次将通过内存操作流实现转换,先将数据保存在内存流里面,再从里面取出每一个数据//将所有要读取的数据设置到内存输入流中,本次利用向上转型为InputStream类实例化InputStream inputStream=new ByteArrayInputStream(str.getBytes());OutputStream outputStream=new ByteArrayOutputStream();//为了能够将所有的内存流数据取出,可以使用ByteArrayOutputStreamint temp=0;//经过此次循环后,所有数据都将保存在内存输出流对象中while((temp=inputStream.read())!=-1){//每次读取一个数据//将读取进来的数据转换为大写字母,利用Character.toUpperCase()可以保证只转换字母outputStream.write(Character.toUpperCase(temp));//字节输出流}System.out.println(outputStream);//调用toString()方法inputStream.close(); //关闭输入流outputStream.close(); //关闭输出流}
}
//结果:
//HELLO WORLD!!!
在ByteArrayOutputStream类里面存在一个重要的方法,可以通过内存输出流取得全部数据:public byte[] toByteArray(),此方法可以将所有暂时保存在内存输出流中的字节数据全部以字节数组的形式返回,而利用这样的方法,就可以实现多个文件的合并读取操作。
例:实现文件的合并读取
package Project.Study.TMemoryStream;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;public class Test2 {public static void main(String[]args)throws Exception{File fileA=new File("d:"+File.separator+"Test1"+File.separator+"test.txt"); //文件路径File fileB=new File("d:"+File.separator+"Test1"+File.separator+"test2.txt");InputStream inputStreamA=new FileInputStream(fileA); //字节输入流InputStream inputStreamB=new FileInputStream(fileB);ByteArrayOutputStream output=new ByteArrayOutputStream();//内存输出流int temp=0; //每次读一个字节while((temp=inputStreamA.read())!=-1){ //循环读取数据output.write(temp); //将数据保存到输出流}while((temp=inputStreamB.read())!=-1){output.write(temp);}//现在所有的内容都保存在了内存输出流里面,所有的内容变为字节数组取出byte[]data=output.toByteArray(); //取出全部数据output.close(); //关闭输出流inputStreamA.close();inputStreamB.close();System.out.println(new String(data)); //字节转换为字符串输出}
}
//结果:
//Hello World!!!
//Hi!!!
相关文章:

数据结构之shell排序
希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法。基本思想就是把一个数组分为好几个数组,有点像分治法,不过这里的划分是用一个常量d来控制。 这个0<d<n,n为数组的长度。这个算法有了插入排序的速度,也可以…

2022-2028年中国高纯铜市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国高纯铜行业市场行业相关概述、中国高纯铜行业市场行业运行环境、分析了中国高纯铜行业市场…

【百度地图API】如何制作班级地理通讯录?LBS通讯录
原文:【百度地图API】如何制作班级地理通讯录?LBS通讯录摘要:班级通讯录必备的功能,比如人员列表,人员地理位置标注,展示复杂信息窗口,公交和驾车等。一般班级人员都不会超过300个,因为可以高效…

Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)...
《Windows Azure Platform 系列文章目录》 注意:本文介绍的是Global Azure (http://www.windowsazure.com),如果你使用的是由世纪互联运维的Azure China,请参考下面的连接。 Azure China (8) 使用Azure PowerShell创建虚拟机,并设…

如何正确的学习Blender-入门到精通课程
流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确) |大小解压后:17.8 GB 含课程文件 |时长:21小时 27分 在Blender中学习3D建模、材质、灯光、渲染和动画&…

Java学习总结:47(打印流)
打印流 打印流包含字节打印流(PrintStream)和字符打印流(PrintWriter)。 例:定义打印流工具类 package Project.Study.PrintStream;import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream;class PrintUtil{ …

npm err错误
npm ERR!无法安装任何包的解决办法 通过config命令: npm config set registry http://registry.cnpmjs.org转载于:https://www.cnblogs.com/owys/p/5058463.html

2022-2028年中国高纯锑行业市场全景研究及发展趋势分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国高纯锑行业市场行业相关概述、中国高纯锑行业市场行业运行环境、分析了中国高纯锑行业市场…

super返回不过来
class Fruit { String color "未确定颜色"; //定义一个方法,该方法返回调用该方法的实例 public Fruit getThis() { return this; } public void info() { System.out.println("Fruit方法"); …

使用Vuforia Unity构建增强现实应用
流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小解压后:1.64 GB |时长:3h 36m 专门为特殊需求群体量身定制,他们隐藏的才能只需要揭开。 …

Java学习总结:48(System类对IO的支持)
System类对IO的支持 System类与IO有关的3个对象常量 No.常量类型描述1public static final PrintStream err常量显示器上错误显示2public static final PrintStream out常量显示器上信息输出3public static final IntputStream in常量键盘数据输入 我们最早使用的"Syste…

mac 端口转发方案
mac 端口映射 好坑 osx10.10mac移除了ipfw改用pfpf以前没用过 查文档mac的 pf语法,没有找到。bsd的倒是很全,心喜拿来一试。http://www.openbsd.org/faq/pf/rdr.html 试了bsd的几个example都不行。报语法错误pfctl: Syntax error in config file: pf rul…

2022-2028年中国钢轨探伤车行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢轨探伤车行业市场行业相关概述、中国钢轨探伤车行业市场行业运行环境、分析了中国钢轨探…

Java中的50个关键字
2019独角兽企业重金招聘Python工程师标准>>> Java中的50个关键字 关键字也称为保留字,是指java语言中规定了特定含义的标示符。对于保留字,用户只能按照系统规定的方式使用,不能自行定义。Java中有50个常用关键字: 与数…

javascript保留字
保留字不能被用作变量名或函数名。abstractbooleanbytecharclassconstdebuggerdoubleenumexportextendsfinalfloatgotoimplementsimportintinterfacelongnativepackageprivateprotectedpublicshortstaticsupersynchronizedthrowstransientvolatile注意:如果把关键字…

动画产业基础学习教程 Rad How to Class – Animation Industry Fundamentals
如何分类——动画产业基础 大小解压后:6.2G 含课程素材 1920X1080 mp4 语言:英语中英文字幕(根据原英文字幕机译更准确) 信息: 绘画技巧、解剖学、角色设计、透视和整体讲故事——这门为期6周的课程旨在聚焦于工作室正在寻找什么…

136. 只出现一次的数字(关于异或的使用)
136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2…

C_str的入门级notes
嗯,受人所托,顺便整理的 英文渣 侵删。 // 注释的部分是解说(废话)和不怎么重(kǎo)要(ch)的 错误请指正 #include <stdio.h> #include <string.h> int main() {char str[] "sstr";// "sstr." s, s, t, r, \0// witho…

2022-2028年中国钢材市场投资分析及前景预测报告(全卷)
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢材行业市场行业相关概述、中国钢材行业市场行业运行环境、分析了中国钢材行业市场行业的…

IOS UITableView详解一数据展示 页面简单实现
为什么80%的码农都做不了架构师?>>> 一 UITableView简介 UITableView用于表格数据展示,是使用频率最高的控件。UITableView继承自UIScrollView,具有UIScrollView的所有特性。 二 UITableView的两种样式 2.1 UITableViewStylePlai…

Bulk_Collect_Performance 比较
上一篇讲到了调用集锦,这篇关注一下性能问题吧。 DECLARECURSOR c_tool_listISSELECT descr d1 FROM hardware;l_descr hardware.descr%type; BEGINOPEN c_tool_list;LOOPFETCH c_tool_list INTO l_descr;EXITWHEN c_tool_list%notfound;END LOOP;CLOSE c_tool_list…

Unity初学Shadergraph创建着色器学习教程
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:51节课(4h 44m) |大小解压后:2.55 GB 使用Unity Shadergraph创建游戏资产指南 初学者的Unity Sha…

Linux命令学习总结:hexdump
命令简介: hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看。 指令所在路径:/usr/bin/hexdump 命令语法: hexdump: [-bcCdovx] [-e fmt] [-f fmt_file] [-n leng…

Java学习总结:49(字符缓冲流:BufferedReader)
字符缓冲流:BufferedReader 在开始前先让我们来看一段代码 package Project.Study.IOSystem;import java.io.InputStream;public class Test4 {public static void main(String[]args)throws Exception{InputStream inputStreamSystem.in;StringBuffer bufnew Str…

2022-2028年中国干洗行业市场全景调研与投资前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国干洗行业市场行业相关概述、中国干洗行业市场行业运行环境、分析了中国干洗行业市场行业的…

成为优秀高级程序员的10个要点(转)
英文原文:10 Steps to become a Senior Software Engineer What 软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。 Why 得到更多的报酬!因为你…

count http://www.cplusplus.com/reference/algorithm/count/
// count algorithm example#include <iostream>#include <algorithm>#include <vector>using namespace std;//count 他查找一个元素出现的次数int main () {int mycount;// counting elements in array: int myints[] {10,20,30,30,20,10,10,20}; // 8…

Clip Studio Paint 高级着色学习教程
剪辑工作室颜料着色专业指南! A Pro’s Guide to Coloring With Clip Studio Paint! MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小解压后:2.78 GB |时…

Java学习总结:50(扫描流:Scanner)
扫描流:Scanner Scanner类定义在java.util包中,所以此类是一个工具类,利用它可以方便地实现数据的输入操作。 Scanner实现了Iterator(迭代)接口与Closeable接口。 Scanner类中定义的常用方法如下: No.方法类型描述1public Scann…

圣杯和双飞翼布局
//圣杯布局-wrap设置padding/left right加相对定位 <!DOCTYPE html> <html lang"zh-CN"> <html> <meta charset"utf-8"> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"/> <title>&…