A:将明文语句进行编写: import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Demo { public static void main(String[] args) throws IOException { DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("a.txt")); //写入方式1 用字符串作为参数写入,调用的是.writeChars方法 dataOutputStream.writeChars("京香,我爱你,就像老鼠爱大米!么么哒!一脸懵逼!我爱女神!一脸懵逼!"); //写入方式2 用字符写入,调用的是.writeChar方法 String s = "京香,我爱你,就像老鼠爱大米!么么哒!一脸懵逼!我爱女神!一脸懵逼!"; char[] charArray = s.toCharArray(); for (int j = 0; j < charArray.length; j++) { dataOutputStream.writeChar(charArray[j]); } dataOutputStream.close(); } } B:a.txt文件中的内容: (由于是编码的,不能一次全部复制粘贴,每次复制一个很麻烦,截图给大家) file:///C:\Users\123\AppData\Local\Temp\ksohtml\wps1075.tmp.png C:对内容进行读取: import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class Demo2 { public static void main(String[] args) throws IOException { DataInputStream dataInputStream = new DataInputStream(new FileInputStream("a.txt")); char[] arr = new char[68]; for( int i = 0; i<arr.length; i++ ){ arr = dataInputStream.readChar(); } System.out.println(new String(arr)); dataInputStream.close(); } } 总结说明: 在读取的时候,必须是将读取的数组设定为与写出内容一样的字符个数才行 file:///C:\Users\123\AppData\Local\Temp\ksohtml\wps1085.tmp.png 多一个就会报错 file:///C:\Users\123\AppData\Local\Temp\ksohtml\wps1096.tmp.png 如果少的话,都不会异常,知识显示不全.不要不断尝试. 也就是说到这里都是可破解的. 为了能够高效读取,我建议可以写一个properties文件,记录下size=68.便于读取. 但是如果我在写入时,前面加上一个 dataOutputStream.writeDouble(10.6);就会阅读时成为???? 在读取的时候就会出现乱码,因此可以通过这种方式增加编写的明文的不可读性.就能像密文一样玩耍了. 当然,这样的明文并不好玩.还是对数据本身进行加密操作更安全.这样毕竟是可读的.只是相当于增加了文件读取的麻烦罢了.换句话说,就是设置了一个读取的限制条件. 当然了,也可以改进下.在写的时候,可以写一些方法,需要的参数是第一条明文阅读的某个参数,如果输入不对,就不显示下面的内容,相当于多个箱子的保护机制一样.保证数据的安全性.
|