我正在构建一个小型Java应用程序,它将接收XML文件并将其转换为文本文件。最终结果是一个jar,当从RPGLE程序运行的shell脚本调用时,它位于IFS上以转换文件。 (不是我的想法,只是负责实现它)
为此,我使用JAXB将这些XML文件解组为JAXB注释的POJOS,然后使用新的IFSFile和IFSFileOutputStream将它们放入文本文件中。 除非订单输出数据已加扰或超出正常顺序,否则此功能非常有效。
我创建了Jar的第二个版本,它替换了标准Java.IO类的IBM Toolbox类。 从Windows运行时,此版本的jar会以正确的顺序输出结果。从400本身运行的同一Jar(Java.IO版本)也会返回加扰数据。
然而,两个Jars都使用标准的Java.IO文件来输入XML。这是因为JAXB不接受IFSFile作为输入。请参阅以下代码:
File inputFile = new File(source);
JAXBContext context = JAXBContext.newInstance(PriceRecords.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
PriceRecords priceRecords = (PriceRecords) unmarshaller.unmarshal(inputfile);
List<PriceRecord> data = priceRecords.getPriceRecords();
我在某处读到AS400s保存/读取文件的方式与标准Linux或Windows操作系统不同。所以我想知道是否有人可以对此有所了解。如果加扰数据不是由上面的inputFile引起的,那么AS400上使用的是Java.IO.File类,还有什么可能导致这种功能上的差异呢?