使用文件通道进行读写

时间:2013-05-12 08:03:05

标签: java java-io filechannel java.nio.file

我需要使用FileChannel帮助处理文件操作。我的要求是,我必须从系统中读取一个大文件,然后需要逐行检查文件。如果找到某些字符串,则需要添加新行或从文件中删除旧行。然后需要保存数据。

N.B。

  1. 我正在努力避免临时文件创建。
  2. 喜欢使用FilChannel
  3. 还想打开一个带读写的文件通道。为此,我使用RandomAccessFile来获取FileChannel
  4. 请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果您想从一个线程中的多个源读取,NIO会为您提供优势。这个价格要复杂得多,而且容易出错。如果您只有一个文件,请使用常规FileInputStream。据我所知,您正在处理文本文件,因此使用BufferedReader包装流:

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(YOUR_FILE)));

下一点是从文件中删除特定行。这不能做到"到位"因为文件总是顺序结构。但是,您可以逐行读取文件,并将行写入其他文件,忽略您不想写的行。然后删除旧文件并重命名临时文件。无所事事:渠道和随机访问文件都不允许您从文件中间删除信息。