我正在修改一些现有的java代码,目前使用以下过程:
- 打开FileInputStream从磁盘读取文件。
- 将FileInputStream传递到DataInputStream的构造函数
- 从DataInputStream读取数据到字节数组
- 创建Apache Commons ByteArrayPartSource基于字节数组
- 创建一个基于ByteArrayPartSource的Apache Commons FilePart。
- 基于FilePart创建Apache Commons MultipartRequestEntity。
- 调用需要MultipartRequestEntity作为参数的外部API。
我试图通过添加代码来扫描输入文件和搜索/替换文本字符串来修改此过程。例如,它可能会扫描文件中的模式'abc'并将其替换为'xyz'。但是,我不确定应该将此修改添加到哪一步。我选择哪一步对性能有影响吗?是否有可能在内存中进行搜索/替换而不将输入文件写入临时区域?
谢谢。
如果您正在阅读的文件是文本文件,您可以:
- 使用接受字节数组的字符串构造函数将从步骤3获得的字节数组转换为字符串
- 执行搜索&使用replace或replaceAll方法替换所述字符串上的操作(需要一些正则表达式知识)
- 使用getBytes方法将结果转换回字节数组 从步骤4恢复处理
强烈建议您在字符串构造函数和getBytes方法中指定文件编码,以避免难以调试的编码问题。
…如果文件是二进制的…我想不出一个方法来搜索和替换里面的文本,抱歉