我的ISO打包文件包含所有记录在一行上。 文件内容如MTI1XXXXXXMTI2XXXXMTI1XXXXX 因此,这里总共3行在一行上。
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.unpack(filedata);`
isoMsg仅能解压缩第一条记录MTI1XXXXXX
此处MTI1,MTI2,MTI3是4位数字的消息类型指示符(MTI)。
如果我将文件中的这些记录(3行)分开并像下面这样逐行读取
MTI1XXXXXX
MTI2XXXX
MTI1XXXXX
它将返回所有记录。 是否可以使用JPOS ISO8583打包程序或通用打包程序读取单行上的所有记录?
添加我的示例代码片段:
InputStream lis = null;
try {
GenericPackager packager;
packager = new GenericPackager("src/main/resources/BitMapConfig.xml");
lis = new FileInputStream("src/test/resources/isoTestFile");
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.unpack(lis);
ISOBitMap bitmap = (ISOBitMap) isoMsg.getComponent(-1);
System.out.println("bitmap.getValue::" + bitmap.getValue()); //returns only first records bitmap whoever file contains 3 MTI on single line
} catch (Exception e) {
e.printStackTrace();
}
我想阅读所有这些内容,并将它们分开放在不同的文件中。
答案 0 :(得分:0)
您可以尝试以下操作:
InputStream lis = null;
try {
GenericPackager packager;
packager = new GenericPackager("src/main/resources/BitMapConfig.xml");
lis = new FileInputStream("src/test/resources/isoTestFile");
while (true) {
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.unpack(lis);
ISOBitMap bitmap = (ISOBitMap) isoMsg.getComponent(-1);
System.out.println("bitmap.getValue::" + bitmap.getValue());
//or isoMsg.dump(System.out,"");
}
} catch (EOFException e) {
//assume we just ended the stream
} catch (Exception e) {
e.printStackTrace();
}