Java Stream操作

时间:2013-03-20 13:10:04

标签: java stream iostream

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

  1. 打开FileInputStream以从磁盘读取文件。
  2. 将FileInputStream传递给DataInputStream的构造函数
  3. 将DataInputStream中的数据读入字节数组
  4. 根据字节数组
  5. 创建Apache Commons ByteArrayPartSource
  6. 根据ByteArrayPartSource创建Apache Commons FilePart。
  7. 根据FilePart创建Apache Commons MultipartRequestEntity。
  8. 调用需要MultipartRequestEntity作为参数的外部API。
  9. 我正在尝试通过添加代码来扫描输入文件并搜索/替换文本字符串来修改此过程。例如,它可能会扫描文件中的模式'abc'并将其替换为'xyz'。但是,我不确定我应该在哪个步骤添加此修改。我选择哪一步有任何性能影响吗?是否可以在不将输入文件写入临时区域的情况下在内存中进行搜索/替换?

    感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

...如果文件是二进制文件...我想不出一种搜索和替换文本的方法,抱歉。