8

如何锁定文件,以便用户只能使用我的 Java 程序解锁?

import java.nio.channels.*;
import java.io.*;

public class filelock {

  public static void main(String[] args) {

    FileLock lock = null;
    FileChannel fchannel = null;

    try {
      File file = new File("c:\\Users\\green\\Desktop\\lock.txt");

      fchannel = new RandomAccessFile(file, "rw").getChannel();

      lock = fchannel.lock();
    } catch (Exception e) {
    }
  }
}

这是我的示例代码。它没有给我我想要的。我希望它拒绝一次读取或写入文件的访问权限,直到我使用我的 Java 程序解锁它。

4

2 回答 2

16

您可以在要锁定的位置执行此操作:

File f1 = new File(Your file path);
f1.setExecutable(false);
f1.setWritable(false);
f1.setReadable(false);

对于解锁,您可以这样做:

File f1 = new File(Your file path);
f1.setExecutable(true);
f1.setWritable(true);
f1.setReadable(true);

申请前

检查文件权限是否允许:

file.canExecute(); – return true, file is executable; false is not.
file.canWrite(); – return true, file is writable; false is not.
file.canRead(); – return true, file is readable; false is not.

对于 Unix 系统,您必须输入以下代码:

Runtime.getRuntime().exec("chmod 777 file");
于 2013-07-08T07:55:16.380 回答
2

您可以使用 Java 代码以非常简单的方式锁定文件,例如:

Process p = Runtime.getRuntime().exec("chmod 755 " + yourfile);

这里 exec 是一个接受字符串值的函数。您可以将任何命令放入其中,它将执行。

或者你可以用另一种方式来做到这一点,比如:

File f = new File("Your file name");
f.setExecutable(false);
f.setWritable(false);
f.setReadable(false);

可以肯定的是,检查文件:

System.out.println("Is Execute allow: " + f.canExecute());
System.out.println("Is Write allow: " + f.canWrite());
System.out.println("Is Read allow: " + f.canRead());
于 2013-10-25T17:24:43.783 回答