我正在尝试使用JRecord库在 Eclipse RCP 应用程序中显示大型机文件。我已经将 COBOL 副本作为文本文件。为了做到这一点,
- 我正在通过 apache commons net FTPClient API 将文件从大型机传输到我的桌面
- 现在我有一个文本文件
- 我正在删除换行符和回车符
- 然后我通过 CobolIoProvider 读取它并将其转换为 AbstractLine 类型的 ArrayList
但由于一些特殊字符,我有抵消问题。这是问题
- 当我不执行第 3 步时,记录 1 中存在偏移问题。因此我包含了第 3 步
- 即使我执行第 3 步,前几千条记录似乎也被 AbstractLineReader 正确格式化(或读取),除非它遇到特殊字符(不确定,但这是我的假设)。
代码片段:
ArrayList<AbstractLine> lines = new ArrayList<AbstractLine>();
InputStream copyStream;
InputStream fis;
try {
copyStream = new FileInputStream(new File(copybookfile));
String filec = FileUtils.readFileToString(new File(datafile));
System.out.println("initial len: "+filec.length());
filec=filec.replaceAll("\r", "");
filec=filec.replaceAll("\n", "");
System.out.println("initial len: "+filec.length());
fis= new ByteArrayInputStream(filec.getBytes());
CobolIoProvider ioProvider = CobolIoProvider.getInstance();
AbstractLineReader reader = ioProvider.newIOBuilder(copyStream, "REQUEST",
Convert.FMT_MAINFRAME).newReader(fis);
AbstractLine line;
while ((line = reader.read()) != null) {
lines.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我在这里想念什么?我需要对从大型机传输的文件进行额外的预处理吗?