You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将写入文件的数组异常打印输出转换回原始值

相关值的正式定义与属性

[C@252ccf04 是Java中char数组对象调用默认Object.toString()方法输出的标准格式字符串,结构规则如下:

  • 开头的[ 标识当前对象是数组类型
  • 后续的C 标识数组的元素类型为char
  • @ 是固定分隔符
  • 末尾的十六进制字符串是该数组对象的身份哈希码(identity hash code),对应System.identityHashCode(数组对象)返回值的十六进制形式,不属于数组内容的哈希码,仅和对象的运行时内存身份相关,不携带任何数组存储的内容信息。

你的需求无法直接实现

你直接把char数组对象写入文件时,写入的就是上述默认toString()的输出结果,原始char数组存储的123456内容根本没有被写入文件,仅读取[C@252ccf04这个字符串不可能反向还原出原始的数组内容。你现有代码输出[[, C, @, 2, 5, 2, c, c, f, 0, 4],本质是把读取到的[C@252ccf04字符串本身拆成了单个字符的数组,和原始数组没有关联。

正确的char数组持久化实现方案

如果需要后续能从文件读取还原char数组内容,写入阶段需要主动对char数组做内容转换,不能直接写入数组对象:

写入侧示例

char[] originPass = new char[]{'1','2','3','4','5','6'};
// 方案1:转成普通字符串写入,适合纯内容存储场景
String writeContent = new String(originPass);
// 此处省略将writeContent写入文件的逻辑

读取侧示例

// 读取文件内容得到字符串
String fileContent = 读取文件返回的字符串;
char[] pass = fileContent.toCharArray();
System.out.println(Arrays.toString(pass));
// 输出为:[1, 2, 3, 4, 5, 6]

内容的提问来源于stack exchange,提问作者hamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:54:02