0

我正在修改一些当前使用以下过程的现有 java 代码:

  1. 打开 FileInputStream 以从磁盘读取文件。
  2. 将 FileInputStream 传递给 DataInputStream 的构造函数
  3. 将 DataInputStream 中的数据读入字节数组
  4. 基于字节数组创建一个 Apache Commons ByteArrayPartSource
  5. 基于 ByteArrayPartSource 创建一个 Apache Commons FilePart。
  6. 基于 FilePart 创建一个 Apache Commons MultipartRequestEntity。
  7. 调用需要 MultipartRequestEntity 作为其参数的外部 API。

我正在尝试通过添加代码来扫描输入文件并搜索/替换文本字符串来修改此过程。例如,它可能会扫描文件以查找模式“abc”并将其替换为“xyz”。但是,我不确定应该将此修改添加到哪个步骤。我选择哪一步对性能有影响吗?是否可以在不将输入文件写入临时区域的情况下进行内存中的搜索/替换?

谢谢。

4

1 回答 1

1

如果您正在阅读的文件是文本文件,您可以:

  • 使用接受字节数组的字符串构造函数将您从第 3 步获得的字节数组转换为字符串
  • 使用replacereplaceAll方法对所述字符串进行搜索和替换操作(需要一些正则表达式知识)
  • 使用getBytes方法将结果转换回字节数组
  • 从步骤 4 恢复处理

强烈建议您在字符串构造函数和 getBytes 方法中指定文件编码,以避免难以调试的编码问题。

...如果文件是二进制文件...我想不出一种方法来搜索和替换其中的文本,对不起。

于 2013-03-20T13:24:40.360 回答