0

我正在尝试使用 IBM 的 JSR352 实现开发 Java 批处理程序。由于批处理作业涉及迭代处理大量记录,因此我选择将其实现为块处理作业。

这项工作涉及 3 个步骤,这些步骤对文件 1 中的每个记录保持重复

  1. Reader 类:从文件 1 中读取内容以形成关键文本
  2. 处理器类:查找文件 2 中的关键文本
  3. Writer Class:使用自定义文本更新文件 2 中找到关键文本的文本

从处理器到编写器,我可以返回找到关键文本匹配的所有行号。但是,如果没有对文件的 RandomAccess,我如何从我的 Writer 更新文件 2 中的那些特定行号?

由于我仅限于使用这些输入/输出流进行文件处理,因此我无法在处理器和编写器类之间拆分查找和更新逻辑。我怎样才能做到这一点?

这是因为代码将在 Windows 机器中开发,但最终在大型机 (z/os) 服务器中执行。

4

2 回答 2

1

处理器在技术上是可选的,因此您可以仅在编写器类中合并查找/更新逻辑。这可能会有所帮助。

在 z/OS 上,使用 VSAM 数据集(也可以通过 JZOS ZFile API 访问)更容易做到这一点。但这将很难在 Windows 上开发/测试。我想您可以将 ZFile 调用分开,并在 Windows 上用一些可以很好地用于测试目的的模拟来替换它们。

于 2017-08-24T17:26:25.280 回答
0

我最终不得不放弃基于 JZOS FileFactory 的方法并使用 JZOS ZFile 的定位 API 来查找特定行(使用密钥)并从编写器更新它。

于 2017-09-18T08:42:08.547 回答