【发布时间】:2024-01-06 05:09:01
【问题描述】:
我有一个用例,我需要为大型机创建一个文件,其中包含使用 Java 的文本和压缩十进制。
我在 Stack Overflow 上经历了很多线程,但似乎没有任何效果。我正在使用 JTOpen 库。
这是我写的一个示例程序:
package com.amazonaws.samples.util;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.StringJoiner;
import com.ibm.as400.access.AS400PackedDecimal;
public class PackedDecimalTest {
public static void main(String args[]) throws IOException {
AS400PackedDecimal packedDecimal = new AS400PackedDecimal(8, 0);
BigDecimal javaBigDecimal = new BigDecimal("20200521");
byte[] convertedBytesArray = packedDecimal.toBytes(javaBigDecimal);
try (FileOutputStream fos = new FileOutputStream("test.txt", false)) {
//StringJoiner joiner = new StringJoiner(" ");
//String firstName = new String("firstName1");
//String lastName = new String("lastName1");
//String empId = new String("1111");
//String dept = new String("empDept1");
//String n = new String("N");
//joiner = joiner.add(firstName).add(lastName).add(empId).add(dept).add(n);
//fos.write(joiner.toString().getBytes());
fos.write(convertedBytesArray);
}
try (FileInputStream fis = new FileInputStream("test.txt")) {
BigDecimal convertedBigDecimal = (BigDecimal) packedDecimal.toObject(fis.readAllBytes());
System.out.println(convertedBigDecimal.toString());
}
}
}
当我编写文件并立即读取它时,它似乎在 Java 中运行良好。我能够正确地看到输出。
但是,当在大型机中打开同一个文件时,我看不到打包的十进制数据。
这是我在大型机中查看数据的方式:
我几乎不知道需要做些什么来修复它。关于我做错了什么的任何指示?如何在同一个文件中同时写入 ASCII 和压缩十进制数据?在为大型机编写文件以正确读取数据之前,是否需要定义任何字符集?我可以将它写在 .txt 文件中,还是文件扩展名应该不同或扩展名没有意义?我对它支持的大型机和文件格式以及字符集一无所知。
【问题讨论】:
标签: java ascii mainframe packed-decimal