如何使文件稀疏? - java

如果我有一个包含许多零的大文件,如何有效地使其成为稀疏文件?

读取整个文件(包括可能零散存储的所有零)并将其重写为新的文件的唯一可能性是,它试图跳过零区域吗?

或者是否有可能在现有文件中进行此设置(例如File.setSparse(long start,long end))?

我正在寻找Java或Linux命令的解决方案,文件系统将是ext3或类似的文件。

参考方案

Linux / UNIX上的某些文件系统可以“打孔”到现有文件中。看到:

  • LKML posting about the feature
  • UNIX file trunctation FAQ(搜索F_FREESP)
  • 它不是很便携,并且不能以完全相同的方式完成。截至目前,我相信Java的IO库尚未为此提供接口。

    如果可以通过fcntl(F_FREESP)或通过任何其他机制进行打孔,则它应比复制/查找循环快得多。

    Java:从文件系统加载资源 - java

    我的项目设定我有以下项目设置:\program.jar \images\logo.png 在我的代码中,我使用相对URL "images/logo.png"引用图像。问题如果我在目录中使用以下命令运行此程序:c:\projects\program_dir\bin\>java -jar program.jar 然后一切正常,Java能…

    Java Scanner读取文件的奇怪行为 - java

    因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…

    Java:线程池如何将线程映射到可运行对象 - java

    试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

    JAVA:字节码和二进制有什么区别? - java

    java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

    Java:如何读取文本文件的每一行并将每一行设置为数组元素? - java

    我正在尝试阅读文本文件每一行中列出的问题,然后将每一行添加到数组中,以便以后可以分别调用它们。我几乎肯定可以用Java来做,但是我不确定如何去做。我确实弄清楚了如何读取整个文本文件并将其全部设置为字符串: private static String readFile(String pathname) { String line = null; try { B…