----------------------
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培训、期待与您交流。 ----------------------