我有一个很常见的情况.我有一个文件,我需要用新内容完全覆盖该文件.但是,每次加载页面时都会访问原始文件(这是一个Web应用程序),所以它不会遗漏很长时间.几毫秒是可以的(虽然不理想),第二个不行.
现在我通过将临时文件写入同一目录然后将该临时文件重命名为新文件的名称来完成此操作.我只是使用普通的File :: Temp和"重命名"来实现这一点,在Perl中.我在想 - 有没有其他推荐/更好的方法来做到这一点?最好是不需要CPAN模块的,因为这是我系统中唯一需要执行此操作的地方,而且我不希望为此提供全新的依赖.
哦,所有这些都必须适用于Windows,Linux,BSD,OS X,Solaris和大多数其他常见平台.
对于那些感兴趣的人,这是有问题的代码.
你的方法似乎很好.它很快,它是原子的,它只使用核心模块,File :: Temp是一种处理临时文件的安全方法.你还需要什么?
我这样做就像你做的那样.至少在Unix类型的操作系统上,文件重命名保证是原子的,所以你不会有原始文件或新文件不存在的任何时刻.