代码之家  ›  专栏  ›  技术社区  ›  David Locke

我可以用Java写一个5GB文件的结尾吗?

  •  6
  • David Locke  · 技术社区  · 16 年前

    我可以用Java写一个5GB文件的结尾吗?这个问题出现在我的办公室里,没有人知道答案是什么。

    5 回复  |  直到 16 年前
        1
  •  13
  •   Greg Case    16 年前

    这应该可以相当容易地使用 RandomAccessFile . 类似下面这样的方法应该有效:

    String filename;
    
    RandomAccessFile myFile = new RandomAccessFile(filename, "rw");
    
    // Set write pointer to the end of the file
    myFile.seek(myFile.length());
    
    // Write to end of file here
    
        2
  •  6
  •   OscarRyz    16 年前

    对。查看此链接randomaccessfile

    http://java.sun.com/javase/6/docs/api/java/io/RandomAccessFile.html#seek(long)

    也就是说,打开文件,然后将位置设置为文件的结尾。从那里开始写作。

    告诉我们进展如何。

        3
  •  2
  •   sblundy    16 年前

    实际上,这取决于底层文件系统以及该平台上的JVM如何实现文件流。因为,如果一个文件大于5GB,你就不能用32位操作系统打开整个文件并写入它,因为有43亿的限制(32^2)。

    因此,简短的答案是,是的,如果Java正确处理文件,文件系统是一个好的文件,那是可能的:

        4
  •  1
  •   Bill the Lizard    16 年前

    如果您只是想附加到文件中,请检查

    FileWriter(File file, boolean append) 
    

    中的构造函数 FileWriter 班级。

    抱歉,我手头没有5GB文件可供测试。:)

        5
  •  0
  •   Community CDub    8 年前

    5GB?我想知道操作系统是否是一个更大的问题,但这值得怀疑。

    理论上,您只需在附加模式下打开文件。

    OutputStream in = new java.io.FileOutputStream(fileName, true);
    

    写到文件系统满为止。

    Bill the Lizard 用于字符数据。