例如一个.txt文件,java程序怎么判断它被其他程序打开呢?

解决方案 »

  1.   

    可以使用jdk1.4的 nio(new io 的类来实现)
    下面是锁定一个文件的例子,你可以系统的学一下,就可以解决你的问题了,这个新加的nio可以解决不同的jvm之间的文件锁定问题,速度更快,功能更强,不过要学不少东东,一句话回答不了你的问题//: c12:FileLocking.java
    // {Clean: file.txt}
    import java.io.FileOutputStream;
    import java.nio.channels.*;public class FileLocking {
      public static void main(String[] args) throws Exception {
        FileOutputStream fos= new FileOutputStream("file.txt");
        FileLock fl = fos.getChannel().tryLock();
        if(fl != null) {
          System.out.println("Locked File");
          Thread.sleep(100);
          fl.release();
          System.out.println("Released Lock");
        }
        fos.close();
      }
    } ///:~
      

  2.   

    附,老的io文件系统实现不了你的问题上面的例子你可以把sleep时间设长一点,然后用window的文本工具(如editplus)打开编辑后保存,系统会提示你文件正在被使用,不可保存
      

  3.   

    有歧义,文件被使用和被打开是不同的概念,比如Windows下一个.txt文件,用Notepad打开显示,其实文件读完以后已经关闭了,而打开并读取文件是一个极短暂的过程,如果你要判断是否有Notepad正在显示一个.txt文件是不可能的,因为Notepad并没有锁文件,任何别的程序可以打开并修改这个文件
      

  4.   

    viena(维也纳nn-实心木头人)说的对。文件被使用和被打开是不同的概念,我就是这个意思。想解决看到viena(维也纳nn-实心木头人)说的后看来是不可能的了。
      

  5.   

    文件打开方式还分好多种呢,你的问题除非用C(去内存中查找是否有这个文件的句柄),Java恐怕是有点难度吧