A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);就会阅读时成为????
在读取的时候就会出现乱码,因此可以通过这种方式增加编写的明文的不可读性.就能像密文一样玩耍了.
当然,这样的明文并不好玩.还是对数据本身进行加密操作更安全.这样毕竟是可读的.只是相当于增加了文件读取的麻烦罢了.换句话说,就是设置了一个读取的限制条件.
当然了,也可以改进下.在写的时候,可以写一些方法,需要的参数是第一条明文阅读的某个参数,如果输入不对,就不显示下面的内容,相当于多个箱子的保护机制一样.保证数据的安全性.

2 个回复

倒序浏览
看你们这么努力,早起晚归,月薪过万不是梦
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马