Java:我在哪里可以找到高级文件操作源/库?

时间:2009-06-25 17:23:49

标签: java file-io

我正在将任意字节数组(32个字节的模拟病毒签名)写入任意文件,我需要代码来覆盖给定文件偏移量的特定文件。 我的具体问题是:是否有可用于执行此特定任务的源代码/库?

我也遇到过Python文件操作的问题。我正在寻找一组可以杀死一行,剪切/复制/粘贴等的函数。我的假设是这些是非常常见的任务,我在Java API和谷歌搜索中都找不到它。 / p>

很抱歉没有RTFM;我没有遇到任何信息,我一直在寻找一段时间。

5 个答案:

答案 0 :(得分:5)

也许您正在寻找标准Java JDK中的RandomAccessFile类。它支持某些偏移量的读写,以及字节数组。

答案 1 :(得分:4)

Java的RandomAccessFile正是您想要的。

它包含seek(long)等方法,可让您移动到文件中的任何位置。它还允许同时进行读写。

答案 2 :(得分:2)

据我所知,Java主要有较低级别的函数来直接操作文件。这是我提出的最好的

  1. 您描述的操作在Swing世界中是标准的,而文本则归结为操纵Document对象。它们对内存中的数据起作用。类java.nio.channels.FileChannel具有类似于直接作用于文件的方法。既不会自动修改行尾,也不会java.iojava.nio中的其他类。

  2. Apache Commons有一个名为Flatfile的沙箱库,它看起来像你想要的那样。问题是尚未发布任何代码。但是,您可能希望与工作人员交谈,以获得更多想法。我没有对图书馆进行一般性检查。

答案 3 :(得分:0)

你看过File / FileReader / FileWriter / BufferedReader吗?您可以获取文件的内容并根据需要进行操作,您可以搜索文件中的数据,可以覆盖文件,创建新文件,附加到现有文件....

我不确定这正是您所要求的,但我一直使用这些API进行日志记录,RTF编辑器,电子邮件的文本文件创建以及许多其他事项。

就剪切/复制/过去而言,我没有遇到直接这样做的能力,但是,你可以输出文件的内容并“复制”你想要的那部分并“粘贴”它进入新文件,或将其附加到现有文件。

答案 4 :(得分:0)

虽然将一个字节数组写入文件是一项常见的任务,但只写一次给定文件32字节字节数组只是你在java.io中找不到的东西:)

要开始使用,以下方法和评论对您来说是否合理?我打赌有人在这里,甚至是我自己,可以快速地鞭打它。

public static void writeFauxVirusSignature(File file, byte[] bytes, long offset) {
    //open file
    //move to offset
    //write bytes
    //close file
}

问题:

  • 潜在的目标文件有多大?
  • 你需要表演吗?

我问,因为干净,易于阅读的代码会使用Apache Commons lib,但在性能敏感的环境中进行大文件写入将需要使用java.nio