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

如何使用Java测试文件是否“完整”(完全写入)

花烨
2023-03-14
问题内容

假设您有一个外部进程将文件写入某个目录,并且有一个单独的进程定期尝试从该目录读取文件。要避免的问题是读取文件,表明其他进程当前正在写出该文件,因此该文件是不完整的。当前,读取的进程使用最小文件期限计时器检查,因此它将忽略所有文件,除非文件的最后修改日期早于XX秒。

我想知道是否有更干净的方法来解决此问题。如果文件类型未知(可能有多种不同的格式),是否存在某种可靠的方法来检查文件头以获取文件中应包含的字节数,而不是文件中当前包含的字节数以确认它们是否匹配?

感谢您的任何想法或想法!


问题答案:

您可以使用外部标记文件。写入过程可以在开始创建文件XYZ之前创建文件XYZ.lock,而在XYZ完成后删除XYZ.lock。这样,读者将很容易知道,仅当不存在相应的.lock文件时,它才可以认为文件已完成。



 类似资料:
  • 问题内容: 目前,我正在该项目中执行例程之一来处理源目录中的文件。有一个Java进程正在查找指定的目录,并尝试读取和处理文件(如果存在)。文件很大,其他第三方进程会更新它们。问题是如何检查文件是否完全写入?我正在尝试使用,但看起来即使编写过程尚未完成,它也会返回实际大小。我觉得解决方案应该取决于平台。任何帮助,将不胜感激。 更新:这个问题与重复的问题没有什么实质性的区别,但是它的答案是工作代码片段

  • 问题内容: 我是新手,请放手。我有一些简单的程序,我需要对写方法进行junit测试。我在输入中有一些收藏。我该怎么做?这是我的代码: 我想知道,因为我从文件中读取了之后,我们可以同时参加两个测试(写/读)还是更好地单独进行测试(如果我们的测试失败了,我们不知道问题出在哪里- 读或写)?如何在junit上正确进行此操作(准备进行测试,然后进行自我测试)?更好地在示例中显示,这样可以更好地理解。 谢谢

  • 问题内容: 我知道文档说明该对象是线程安全的,但这是否意味着从所有方法对其进行的所有访问都是线程安全的?因此,如果我一次从多个线程中调用它,并且一次在同一实例上调用它,会不会发生什么不好的事情? 问题答案: 快速答案是肯定的,它们是线程安全的。但是不要让它在那里… 首先,一个小的内部管理是一个接口,任何不是线程安全的实现都将破坏书面合同。您包括的链接是指,它具有一定的灵巧性。 您包含的链接引起了一

  • 综述 许多应用程序被设计为通过部分隐藏输入表单来确定用户当前状态而展示不同的页面。但是,在许多情况下,有可能通过代理提交此类隐藏表单的值。在这些案例中,服务器端控制措施必须足够健壮来确保正确的业务逻辑数据。 此外,应用程序必须不依赖于不可编辑元素,下拉框列表或者业务逻辑处理过程的隐藏表单域,因为这些只是在浏览器的环境中不可编辑。用户可以使用代理工具来编辑这些参数并尝试操纵业务逻辑。如果应用程序对外

  • 问题内容: 因此,我听说如果将2个字符串与==进行比较,则只有它们都引用相同的对象/实例时,我才会返回true。那是琴弦。布尔呢? 问题答案: ==是否检查布尔值是否完全相等?-Java 这取决于您是在谈论s(对象包装,请注意大写)还是s(原始,请注意小写)。如果您在谈论s(对象包装器),就像处理所有对象一样,请检查 身份 ,而不是对 等 。如果您在谈论s(基元),它将检查是否相等。 所以: 但

  • 问题内容: 我试图将比对的蛋白质序列输出到文件,但是,每次我尝试将字符串写入文件时,输出字符串都会被截断。我尝试写入的字符串长4603个字符,并以正确的字符数打印到控制台。我要附加的第一段代码与输出变量本身有关。我将在此处包括完整的字符串,因为对我而言,在写入文件时字符串被截断的方式是可以重现的。 使用此代码段,文件的输出应等于al1。但是,该文件的输出如下: 将这两个序列粘贴到文字处理器中并计算