---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流!

---------------------- 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相关推荐

  1. 黑马程序员——IO流

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  2. 黑马程序员————IO流4(day21)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流4 l  对象的序列化 l  管道流 l  Ra ...

  3. 黑马程序员————IO流3(day20)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流3 l  File概述 l  File类常见方法 ...

  4. 黑马程序员————IO流2(day19)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流2 l  BufferedWriter l  B ...

  5. 黑马程序员————IO流1(day18)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流1 l  其它对象(System) l  其它对 ...

  6. 黑马程序员 IO流

       ------- android培训.java培训.期待与您交流! ----------  IO流 java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字 ...

  7. 黑马程序员——IO 流总结

    ------<a href="http://www.itheima.com"target="blank">Java培训.Android培训.iOS培 ...

  8. 黑马程序员---IO流

    ---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...

  9. 黑马程序员————IO流------(3)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- File类: 流只能操作数据,若想要用流操作被文件封装的数据信息,必须用file对象. > ...

  10. 黑马程序员-IO流其他流对象

    ------- android培训.java培训.期待与您交流! ---------- 切割流和合并流: 切割流:一个源流对应多目的流 指定大小输出到不同的流中 合并流:多个源流对应一个目的流 先把源 ...

最新文章

  1. 成功解决Both binary classification-only and multiclassification-only loss function or metrics specified
  2. SpringBoot 路径访问控制
  3. 获取日志$6到$NF的字段
  4. 嵌入式大牛常用的十大C/C++开发利器
  5. Asp.Net Core 中间件应用实战中你不知道的那些事
  6. 合约 cd 模式_CD的完整形式是什么?
  7. uni-app文档需要注意细节点
  8. BioPython-1
  9. php中crypt怎么还原,PHP笔记 —— crypt方法
  10. JavaScript对象学习笔记
  11. JAVA基础系列:Arrays.binarySearch二分查找
  12. linux内核2.6.3x--Executable file formats / Emulations、 Networking support
  13. android gradle下载
  14. vscode安装 Fira Code 编程字体,编程符号更精致美观
  15. 电子厂计算机维修周记,电子厂实习周记【三篇】【完整版】
  16. 米游社-原神每日签到含DS算法
  17. 像素坐标转换实际坐标python_像素坐标转世界坐标的计算
  18. 无人驾驶一 协方差矩阵的几何意义
  19. MATLAB 画点图即连线
  20. Invalid argument during startup: Failed to open the .conf file: redis-window

热门文章

  1. 数学小技巧(模拟)求1/n
  2. dbcc checkdb 200g 要多久_东丽区无人驾驶学多久,放心省心_石家庄北方汽修学校
  3. 【PATL2-002】链表去重(链表模拟)---水题
  4. 【UVA202】Repeating Decimals(模拟除法)
  5. u8显示云服务器已离线_u8登录不知道这样的主机
  6. 翻译: 2.5. 自动微分 深入神经网络 pytorch
  7. 极客大学架构师训练营--编程的未来 面向对象 依赖倒置原则 -- 第二次作业
  8. 现代通信原理7.1:模拟角度调制的基本概念
  9. 好题汇总(持续更新)
  10. android studio for android learning (九) android之Adapter用法