java - 如何从 Jpos ISO8583 打包文件中读取所有记录,该文件包含一行中的所有记录
问题描述
我有 ISO 打包文件在单行中包含其所有记录。文件内容如 MTI1XXXXXXMTI2XXXXMTI1XXXXXX 所以这里总共有 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();
}
我想阅读所有这些并将它们分开在不同的文件中。
解决方案
你可以尝试这样的事情:
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();
}
推荐阅读
- c# - 在 Razor 视图中显示列表
- c# - 在 CsvHelper 中,如何转换 List 类型的字段
到杰森? - elasticsearch - Elasticsearch:计算给定值的出现次数
- postgresql - 我是否使用索引来加速这个 Postgres 查询?
- c# - 我应该关心游戏中的课程数量吗?
- node.js - Python将带有socket.io的opencv img发送到Nodejs
- ios - 带有 switch 语句的 SwiftUI 动画
- javascript - Azure 存储 blob 库将 blob 下载到本地计算机
- crc - 我如何为这个协议建模 CRC
- javascript - Stripe React 成功响应后如何重定向到另一个页面?