【问题标题】:How to prevent file from being overridden when reading and processing it with Java?使用Java读取和处理文件时如何防止文件被覆盖?
【发布时间】:2009-08-13 13:28:21
【问题描述】:

我需要使用 Java 读取和处理一些大文件,我想知道,是否有一些明智的方法可以保护文件在我阅读时不会被其他进程覆盖 &处理它?

也就是说,通过某种方式使其成为只读,保持“打开”之类的......

这将在 Windows 环境中完成。

br, 图子

【问题讨论】:

    标签: java file-io filelock file-processing


    【解决方案1】:

    你想要一个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 块,但你不应该在你的生产代码中

    【讨论】:

    • 您好,有什么方法可以防止文件被编辑吗?如果我在 Windows 下获得独占锁并用文本编辑器(例如 Scite)打开它,它会以空内容打开,但如果我写一些东西并保存,文件最终会被清空吗?相反,如果我尝试用 Eclipse 打开它,它会告诉我该文件无法打开,因为它被另一个进程锁定了......这可能最终到了 Windows,但有人有什么想法吗?
    【解决方案2】:

    工作正常,遇到一些问题:as the locking doesn't seem to be totally absolute

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2012-11-04
      • 2012-11-20
      • 2015-04-09
      • 2021-07-11
      相关资源
      最近更新 更多