我需要使用FileChannel
帮助处理文件操作。我的要求是,我必须从系统中读取一个大文件,然后需要逐行检查文件。如果找到某些字符串,则需要添加新行或从文件中删除旧行。然后需要保存数据。
N.B。
RandomAccessFile
来获取FileChannel
。请帮我解决这个问题。
答案 0 :(得分:0)
如果您想从一个线程中的多个源读取,NIO会为您提供优势。这个价格要复杂得多,而且容易出错。如果您只有一个文件,请使用常规FileInputStream
。据我所知,您正在处理文本文件,因此使用BufferedReader
包装流:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(YOUR_FILE)));
下一点是从文件中删除特定行。这不能做到"到位"因为文件总是顺序结构。但是,您可以逐行读取文件,并将行写入其他文件,忽略您不想写的行。然后删除旧文件并重命名临时文件。无所事事:渠道和随机访问文件都不允许您从文件中间删除信息。