2013-05-12 32 views
0

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

N.B.

  1. 我试图避免临时文件的创建。
  2. 喜欢做的事与FilChannel
  3. 也喜欢用读写打开一个文件通道。要做到这一点,我用RandomAccessFile得到FileChannel

请帮我解决这个问题。

+2

发布您的代码,并解释您卡在哪里。 – 2013-05-12 08:06:53

回答

0

如果您想从一个线程中的多个源读取NIO,NIO会为您提供优势。这个价格要复杂得多,而且容易出错。如果您只有一个文件使用常规FileInputStream。据我了解,你与文本文件的工作,因此与BufferedReader换流:

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

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

+0

我的第一个不是我想避免创建临时文件。所以,需要找到另一条出路 – Souvik 2013-05-13 07:37:51