黑马程序猿 IO流 ByteArrayInputStream与ByteArrayOutputStream
---------------------- package cn.itcast.IO; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class ByteArrayStreamDemo { /** * 通过对文件进行加密演示字节缓冲流的作用 * ByteArrayInputStream: * 须要指定一个缓冲数组。通过read读取缓冲数组 * ByteArrayOutputStream * 缓冲流中维护了一个byte数组。该数组会随着写入字节而自己主动增大 * 能够通过toByteArray()用一个指定大小的byte数组存放写入的所字节 * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub File f=new File("E:\\javatest\\1.jpg"); // JiaMi(f); JieMi(f); } public static void JiaMi(File f) throws Exception { int b=-1; FileInputStream fis=new FileInputStream(f); int len=(int)f.length(); byte []buf=new byte[len]; fis.read(buf); //把原文件加密,就是加密的文件替换了原文件 fis.close(); //当流关联文件,文件是无法删除的 f.delete(); //此处使用ByteArrayInputStream仅仅是为了演示。现实中就不要这么用 //直接用FileInputStream的read就能完毕。
ByteArrayInputStream bais=new ByteArrayInputStream(buf); FileOutputStream fos=new FileOutputStream(f); while((b=bais.read())!=-1) { //进行异或运算 fos.write(((byte)b)^0xff); } bais.close(); fos.close(); } public static void JieMi(File f) throws Exception { int b=-1; FileInputStream fis=new FileInputStream(f); ByteArrayOutputStream baos=new ByteArrayOutputStream(); //把原文件进行解密之后存进字节缓冲流中 while((b=fis.read())!=-1) { baos.write(((byte)b)^0xff); } //返回缓冲流中全部字节的副本,也就是创建了新的字节数组,并返回 byte []buf=baos.toByteArray(); fis.close(); f.delete(); FileOutputStream fos=new FileOutputStream(f); fos.write(buf); baos.close(); fos.close(); } /*解密就是加密的逆过程,程序中是用异或运算类改变文件的二进制表示 观察发现使用ByteArrayOutputStream让代码变得简洁。而ByteArrayInputStream反而多此一举 可能这个需求不能非常好的表现出字节输入缓冲流的长处 */ } ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流。 ----------------------
转载于:https://www.cnblogs.com/mfrbuaa/p/5249836.html
黑马程序猿 IO流 ByteArrayInputStream与ByteArrayOutputStream相关推荐
- 黑马程序员——IO流
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- 黑马程序员————IO流4(day21)
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流4 l 对象的序列化 l 管道流 l Ra ...
- 黑马程序员————IO流3(day20)
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流3 l File概述 l File类常见方法 ...
- 黑马程序员————IO流2(day19)
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流2 l BufferedWriter l B ...
- 黑马程序员————IO流1(day18)
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流1 l 其它对象(System) l 其它对 ...
- 黑马程序员 IO流
------- android培训.java培训.期待与您交流! ---------- IO流 java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字 ...
- 黑马程序员——IO 流总结
------<a href="http://www.itheima.com"target="blank">Java培训.Android培训.iOS培 ...
- 黑马程序员---IO流
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...
- 黑马程序员————IO流------(3)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- File类: 流只能操作数据,若想要用流操作被文件封装的数据信息,必须用file对象. > ...
- 黑马程序员-IO流其他流对象
------- android培训.java培训.期待与您交流! ---------- 切割流和合并流: 切割流:一个源流对应多目的流 指定大小输出到不同的流中 合并流:多个源流对应一个目的流 先把源 ...
最新文章
- 成功解决Both binary classification-only and multiclassification-only loss function or metrics specified
- SpringBoot 路径访问控制
- 获取日志$6到$NF的字段
- 嵌入式大牛常用的十大C/C++开发利器
- Asp.Net Core 中间件应用实战中你不知道的那些事
- 合约 cd 模式_CD的完整形式是什么?
- uni-app文档需要注意细节点
- BioPython-1
- php中crypt怎么还原,PHP笔记 —— crypt方法
- JavaScript对象学习笔记
- JAVA基础系列:Arrays.binarySearch二分查找
- linux内核2.6.3x--Executable file formats / Emulations、 Networking support
- android gradle下载
- vscode安装 Fira Code 编程字体,编程符号更精致美观
- 电子厂计算机维修周记,电子厂实习周记【三篇】【完整版】
- 米游社-原神每日签到含DS算法
- 像素坐标转换实际坐标python_像素坐标转世界坐标的计算
- 无人驾驶一 协方差矩阵的几何意义
- MATLAB 画点图即连线
- Invalid argument during startup: Failed to open the .conf file: redis-window
热门文章
- 数学小技巧(模拟)求1/n
- dbcc checkdb 200g 要多久_东丽区无人驾驶学多久,放心省心_石家庄北方汽修学校
- 【PATL2-002】链表去重(链表模拟)---水题
- 【UVA202】Repeating Decimals(模拟除法)
- u8显示云服务器已离线_u8登录不知道这样的主机
- 翻译: 2.5. 自动微分 深入神经网络 pytorch
- 极客大学架构师训练营--编程的未来 面向对象 依赖倒置原则 -- 第二次作业
- 现代通信原理7.1:模拟角度调制的基本概念
- 好题汇总(持续更新)
- android studio for android learning (九) android之Adapter用法