new File("...") 是否锁定文件?

2024-03-09

我读到了new File("path")不会在磁盘上物理创建文件。尽管在 API 中是这样说的:

此类的实例可能表示也可能不表示实际的文件系统 对象,例如文件或目录。如果它确实表示这样的对象,则该对象驻留在分区中。分区是文件系统存储的特定于操作系统的部分。单个存储设备(例如物理磁盘驱动器、闪存、CD-ROM)可能包含多个分区。

所以我很好奇在多线程环境中使用这样的代码是否安全:

File file = new File( "myfile.zip" );
// do some operations with file (fill it with content)
file.saveSomewhere(); // just to denote that I save it after several operations

例如,thread1来到这里,创建一个实例并开始进行操作。同时 thread2 中断它,创建它的实例同名(myfile.zip) 并执行一些其他操作。之后他们保存文件。

我需要确保它们不能使用同一个文件,并且保存文件的最后一个线程会覆盖前一个线程。


不,文件不会保持锁定,并且对于您描述的模式不安全。您应该锁定文件或将文件保留在某个包装类中。

如果您愿意提供更多的代码,有人肯定可以帮助您找到合适的模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

new File("...") 是否锁定文件? 的相关文章

随机推荐