Java 用文件通道读写

Java 用文件通道读写,java,java-io,filechannel,java.nio.file,Java,Java Io,Filechannel,Java.nio.file,我需要有关使用FileChannel进行文件操作的帮助。我的要求是,我必须从系统中读取一个大文件,然后需要逐行检查文件。如果找到某些字符串,则需要在文件中添加新行或删除旧行。然后需要保存数据 注意 我试图避免创建临时文件 喜欢用FilChannel做吗 还喜欢打开具有读写功能的单个文件通道。为此,我使用了RandomAccessFile来获取FileChannel 请在这方面帮助我。如果您想在一个线程中阅读多个源,NIO会给您带来好处。这种API的价格要复杂得多,而且容易出错。如果只有一个文件,

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

注意

  • 我试图避免创建临时文件
  • 喜欢用FilChannel做吗
  • 还喜欢打开具有读写功能的单个文件通道。为此,我使用了
    RandomAccessFile
    来获取
    FileChannel

  • 请在这方面帮助我。

    如果您想在一个线程中阅读多个源,NIO会给您带来好处。这种API的价格要复杂得多,而且容易出错。如果只有一个文件,请使用常规的
    FileInputStream
    。据我所知,您正在使用文本文件,因此请使用
    BufferedReader
    包装流:

    BufferedReader=new BufferedReader(new InputStreamReader(new FileInputStream(您的_文件))


    下一点是从文件中删除特定行。这不能“就地”完成,因为文件始终是顺序结构。但是,您可以逐行读取文件并将这些行写入其他文件,忽略您不想写入的行。然后删除旧文件并重命名临时文件。无需执行任何操作:通道或随机访问文件都不允许您从文件中间删除信息

    发布你的代码,并解释你被困在哪里。我的第一个问题是我想避免创建临时文件。所以,我们需要找到另一条出路