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

使用Java读取和处理文件时,如何防止文件被覆盖?

赏阳嘉
2023-03-14
问题内容

我需要使用Java来读取和处理一些较大的文件,并且我想知道,是否有某种明智的方法来保护文件,使其在我读取和处理文件时不会被其他进程覆盖?

也就是说,可以通过某种方式将其设为只读,使其保持“打开”状态或类似的方式。

这将在Windows环境中完成。

br,Touko


问题答案:

你想要一个FileLock:

FileChannel channel = new RandomAccessFile("C:\\foo", "rw").getChannel();

// Try acquiring the lock without blocking. This method returns
// null or throws an exception if the file is already locked.
FileLock lock = channel.tryLock();

// ...

// release it
lock.release();

为了简单起见,我省略了一个try / finally块,但您不应该在生产代码中使用



 类似资料:
  • 在我的骆驼应用程序,它是进程文件从ftp服务器。当我测试时,我发现在文件上传期间,同时我的路线开始拾取该文件并做过程。我已经设置了readLock为“changed”,延迟为“60000”,我的文件大约是500M。我错过什么了吗?

  • 假设我有一个类< code>Point和一个函数来处理< code>Point实例 现在我想从一个文件中读取<code>点 我现在该怎么办?我可以编写一个函数将文件读取到< code>points列表中,并调用< code>handlePoints函数。 不幸的是,这个函数看起来并不特别优雅,因为它在内存中创建了一个不必要的点列表。 使用迭代器不是更好吗? 有意义吗?在Java,这段代码不会太“吵

  • 问题内容: 我需要使用Java读取XML文件。它的内容就像 是否有特殊的阅读器/ JAR,还是应该使用 FileInputStream进行 阅读? 问题答案: 另一个建议:尝试使用Commons消化器。这使您可以使用基于规则的方法非常快速地开发解析代码。有一个教程在这里和图书馆可在这里 我也同意Brian和Alzoid的观点,因为JAXB非常适合快速启动和运行。您可以使用JDK附带的xjc绑定编译

  • 我试图从XML文件中读入一些数据,但遇到了一些问题,我的XML如下所示: 我试图将这些值作为字符串读入Java程序,到目前为止,我已经编写了以下代码: 我正在努力读取和打印id、用户名等的值。

  • 除非我能在确保输入文件是用UTF-8编码后使测试工作,否则什么是基本错误,我真正感兴趣的问题是: 上面的方法是否保证了UTF-8文件中的缺陷也被逐个复制,或者将字符加载到的过程是否改变了这一点?

  • 我正在写一个小程序,可以处理大的(最多无限个)文本文件。处理过程将相当简单(将部分内容修剪并处理成单独的字符串,然后打印出来)。然而,由于数据的长度可能是无限的,我可能会遇到超过堆的问题。我想到的第一个解决方案是使用流来处理数据。然而,Files类中的lines()方法只能将文本分成行。我的线条也可以无限长! 我遇到的另一个解决方案是使用scanner useDelimiter方法: 这种方法会阻