当前位置: 首页 > 面试题库 >

Java中的文件截断操作

戚繁
2023-03-14
问题内容

在Java中截断文件的最佳实践方法是什么?例如,此虚拟函数仅作为示例来阐明其意图:

void readAndTruncate(File f, List<String> lines)
        throws FileNotFoundException {
    for (Scanner s = new Scanner(f); s.hasNextLine(); lines.add(s.nextLine())) {}

    // truncate f here! how?

}

由于该文件充当占位符,因此无法将其删除。


问题答案:

使用FileChannel.truncate:

try (FileChannel outChan = new FileOutputStream(f, true).getChannel()) {
  outChan.truncate(newSize);
}


 类似资料:
  • 问题内容: 截断->这将重置整个表,是否可以通过截断来重置特定的记录/检查条件。 例如:我想重置所有数据并在表中保留过去30天。 谢谢。 问题答案: 不,是全部还是全部。您可以这样做,但这会失去的速度优势。

  • 问题内容: 我有一个向stdout写入大量数据的过程,我正在将其重定向到日志文件。我想通过不时地将当前文件复制到一个新名称并将其截断来限制文件的大小。 我通常的截断文件技巧,例如 不起作用,大概是因为进程正在使用它。 有什么办法可以截断文件?还是将其删除,并以某种方式将流程的stdout与新文件相关联? FWIW,这是第三方产品,我无法对其进行更改以更改其日志记录模型。 *通过文件进行 *EDIT

  • 我有一个代表. csv文件结构的自定义类,它稍后会读入该类的arrayList。它有以下标签: 这是简化的. csv文件: 当我将这些读入arrayList并将各个状态放在consolse上只是为了检查时,它会正确显示(IN_STOCK,OUT_OF_STOCK)。但是,当我尝试将其插入数据库时,它会被截断: java.sql.SQLException:第1行的列“Status”的数据被截断 以下

  • 我有一个用Java定义的,用于在工作流中导航。 我需要能够接受一个字符串,检查堆栈,看看它是否有多个出现,然后弹出元素直到该字符串的“最底部”出现。“截断”对我想做的事情的描述可能很糟糕。“pop直到我命中任意索引”可能更接近我需要的。

  • 做 截断如果它已经存在?令人惊讶的是,Java的API留档没有说。API也不会留档Java7。语言本身的规范对类的语义学没有什么可说的。 我知道 导致附加到文件。但附加和截断并不是唯一的可能性。如果将100个字节写入1000字节的文件,一种可能性是最后900个字节保持原样。

  • 虽然我对Objective-C开发很熟悉,但当涉及错误解释时,我仍然认为自己有点像n00b。我在申请别人也在做的工作。我相信我们可能有不同版本的Xcode,一个开发者有一台PC(其他人和我有一台MacBook)。我使用的是Xcode 4.5.1。 问题所在 Apple clang版本4.1(Tags/Apple/Clang-421.11.66)(基于LLVM 3.1 SVN)目标:i386-App