展开全部

看你纠结这个问题,好几天了.我就仔细帮你看了下代码,修改后如下import java.io.*;

// 看了下,该程序想实现用密e69da5e887aa3231313335323631343130323136353331333337616535码password对数据data进行加密,变量名字取得比较乱,所以修改了部分变量名字

public class TestString {

// 定义的shuju数据 和 password密码,可以放到前面

static String data = "6869";

static String password = "xzfd";

public static void main(String[] args) throws Exception {

char s[] = data.toCharArray();

char p[] = password.toCharArray();

int n = s.length;

int m = p.length;

StringBuilder ecodeDataTemp = new StringBuilder();// 建议重新定义一个变量用于存储加密后的字符

// 你的代码str = new String(s); 又把最开始的str变量给覆盖掉了..

for (int k = 0; k

int temp = s[k] + p[k % m];// 加密的过程

s[k] = (char) temp;

// 把每一个加密后的字符都变成一个uncoide编码进行存储,比如\\ua9,

// 这样的好处,就算是该字符没有可以显示出来的字符,也可以存进去.比如很多的char的值可显示的字符,那么也不怕.

// 你的代码强行把字符存进去,那么如果该字符不存在等情况,可能就会显示出 ?

ecodeDataTemp.append("\\u" + Integer.toHexString(temp));

}

String ecodeData = new String(ecodeDataTemp);

//System.out.println("输出加密的数据到文件:" + ecodeData);

File file = new File("Tesat.txt");

FileWriter fw = new FileWriter(file);

fw.write(ecodeData);

fw.flush();

fw.close();

FileReader fr = new FileReader(file);

String readData = "";

int b;

while ((b = fr.read()) != -1) {

readData = readData + (char) b;

}

fr.close();

//System.out.println("从文件里读取到的数据:"+readData);

StringBuilder decodeDataTemp  = new StringBuilder();

String[] hex = readData.split("\\\\u");// 切割字符成单独的unicode字符

for (int i = 1; i

int temp = Integer.parseInt(hex[i], 16);

decodeDataTemp.append(((char) temp));

}

char[] es = decodeDataTemp.toString().toCharArray();

for (int k = 0; k

int temp = es[k] - p[k % m];

es[k] = (char) temp;

}

String decodeData = new String(es);

System.out.println("加密前的数据data : " + data);

System.out.println("加密后的数据data : " + ecodeData);

System.out.println("如果强制解密data : "+decodeDataTemp);

System.out.println("解密后的数据data : " + decodeData);

}

}

查看运行效果加密前的数据data : 6869

加密后的数据data : \uae\ub2\u9c\u9d

如果强制解密data : ????

解密后的数据data : 6869

java输出的文本内容不对_java 字符串写入文件后再读出不一样? 有什么解决办法吗?...相关推荐

  1. golang 将接口内容转换为json字符串写入文件

    使用示例 package mainimport ("encoding/json""fmt""os" )type S struct {A st ...

  2. 二维数组转稀疏数组,写入文件后再读取文件,将内容转回二维数组

    该方法模拟的是将棋盘的位置保存到稀疏数组中,降低存储的数据量,通过写入磁盘做持久化,再读入后恢复棋盘内容. package com.moson.sparsearray;import java.io.* ...

  3. python生成100个随机数、写入文件后再读取显示内容_Python3 实现随机生成一组不重复数并按行写入文件...

    笔主在做一个项目要生成一组随机有序的整型数字,并按行输出到文本文件使用,恰好开始学习Python3,遂决定直接使用Python3解决 思路:与随机数相关的函数都要使用到random这个系统库,查看相关 ...

  4. Java实现将文本内容、网址链接url,生成二维码与反解析

    2019独角兽企业重金招聘Python工程师标准>>> Java实现将文本内容.网址链接url,生成二维码与反解析 QR码的"QR"是Quick Response ...

  5. C语言将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出。

    题目 将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出. 代码 # include <stdio.h> # include <str ...

  6. vuejs项目纯js导出word、在线下载富文本内容或者网页另存为word文件

    所有前端导入导出方法集合: 前端必备技能知识:JS导出Blob流文件为Excel表格.Vue.js使用Blob的方式实现excel表格的下载(流文件下载)_勤动手多动脑少说多做厚积薄发-CSDN博客_ ...

  7. php fwrite 追加写入,PHP fwrite 函数:将字符串写入文件(追加与换行)

    PHP fwrite() fwrite() 函数用于向文件写入字符串,成功返回写入的字符数,否则返回 FALSE . 语法: int fwrite( resource handle, string s ...

  8. org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成。 的解决办法

    问题描述 在基于微服务架构风格的项目开发过程中,为了提高快速开发的目的,提高开发效率,集成了 MyBatisPlus,对于 MyBatisPlus 封装的 CRUD API 接口已经非常强大了,但是有 ...

  9. c语言将字母存入字符串,C语言把资料读入字符串以及将字符串写入文件

    C语言把文件读入字符串以及将字符串写入文件 1.纯C实现 FILE *fp; if ((fp = fopen("example.txt", "rb")) == ...

最新文章

  1. MIT警告深度学习正在逼近计算极限,网友:放缓不失为一件好事
  2. 算法--无重复字符的最长字串(详细)
  3. Oracle RMAN备份深入解析--联机备份
  4. android textview改变部分文字的颜色和string.xml中文字的替换及部分内容设置颜色、字体、超链接、图片...
  5. 网站推广——网站推广专员在优化网站中都有哪些技巧呢?
  6. python开发微信小程序-Python实现微信小程序支付功能
  7. 简单易用的倒计时js代码
  8. 如此生猛的纪录片,背后是难以置信的故事!
  9. Android 报错:Conversion to Dalvik format failed: ...
  10. 计算机技术基础的心得体会,计算机技术基础学习心得体会5篇范文.docx
  11. Fedora 24 x86 安装VirtualBox
  12. Python标准库11 多进程探索 (multiprocessing包)
  13. Android自定义View——动态ProgressBar之模仿360加速球
  14. 架构师之路 — 分布式系统 — 分布式网络分区难题
  15. ios 按钮下面加下划线_iOS 给部分文字加下划线四种方法
  16. 《数据分析:企业的贤内助[陈哲]》——读书笔记
  17. 如何实现 “中间这几个字要加粗,但是不要太粗,比较纤细的那种粗” ?
  18. 8583协议报文例子。
  19. 芯片验证周期——数字IC验证
  20. 【frp】使用 frp 实现内网穿透(CentOS 云服务器 + Win10)

热门文章

  1. win10的11对战平台突然无法启动魔兽
  2. 一段程序结束等待进行下一段程序_c++实战篇(十二),debug调试程序
  3. ue4 设置intellisence_UE4的配置界面写入
  4. ios 点生成线路 百度地图_网站地图全面解析
  5. 【实战】使用Job来修改Transform
  6. 【建议收藏】找不到免费的角色动画?来试试mixamo
  7. c++笔试必考内容:const使用详解
  8. dev控件调用html页面,Chrome开发工具 扩展 DevTools
  9. api返回的数据结构_JavaScript中的数据结构数组 和 栈
  10. OpenShift 4 - DevSecOps (3) - 用 RHACS 精细化管理云原生应用安全