Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建只读文件_Java_File_Protection_Readonly - Fatal编程技术网

Java 创建只读文件

Java 创建只读文件,java,file,protection,readonly,Java,File,Protection,Readonly,我想知道是否有可能在创建时创建或模拟一个包含内容集的文件,并保证任何人都不能更改该文件。 如果可能的话,我可以用java来做吗?是的,我们可以使用setReadOnly()方法在java中创建只读文件 使用此方法后,您将无法写入或编辑该文件 import java.io.File; public class FileReadOnly { public static void main(String[] args) { File file = new File("c:/file.tx

我想知道是否有可能在创建时创建或模拟一个包含内容集的文件,并保证任何人都不能更改该文件。
如果可能的话,我可以用java来做吗?

是的,我们可以使用setReadOnly()方法在java中创建只读文件

使用此方法后,您将无法写入或编辑该文件

import java.io.File;

public class FileReadOnly {
  public static void main(String[] args) {
    File file = new File("c:/file.txt");
    file.setReadOnly();
    System.out.println("File is in read only mode");
    }
}
或者也这样

import java.io.File;
import java.io.IOException;

public class FileAttributesDemo {

  public static void main(String[] args) throws IOException {
    // Create a new file, by default canWrite=true, readonly=false
    File file = new File("test.txt");
    if (file.exists()) {
      file.delete();
    }
    file.createNewFile();
    System.out.println("Before. canWrite?" + file.canWrite());

    // set to read-only, atau canWrite = false */
    file.setWritable(false);
    System.out.println("After. canWrite?" + file.canWrite());
  }
}

如果您只需要创建一个只读文件,那么下面的代码就足够了吗?除非我在你的问题中遗漏了什么:

import java.io.File;
import java.io.IOException;

public class FileAttributesDemo {

  public static void main(String[] args) throws IOException {
    // Create a new file, by default canWrite=true, readonly=false
    File file = new File("test.txt");
    if (file.exists()) {
      file.delete();
    }
    file.createNewFile();
    System.out.println("Before. canWrite?" + file.canWrite());

    // set to read-only, atau canWrite = false */
    file.setWritable(false);
    System.out.println("After. canWrite?" + file.canWrite());
  }
}

将文件设置为只读不会使其成为任何人都无法更改的文件。取消设置只读标志大约需要3秒钟。然后,可以在十六进制编辑器或其他可以处理文件类型的程序中打开该文件并进行更改。

要使其设置为可写(true)而不允许再次写入,可以扩展该文件并重写setWritable()方法

它产生输出:

Before. canWrite? true 
Set Writable False. canWrite? false 
Set Writable True. canWrite? false
尝试:

  • file.setReadOnly()文件
  • Runtime.getRuntime().exec(“attrib”+“”+file.getAbsolutePath()+“”+R”)//(适用于Windows)

只读方式很有用,尽管它不是不可能更改或破解的。因此,如果您无法创建无法访问的文件,则可以通过某种加密算法将其内容转换为不可理解的内容。例如,AES可能非常有用

在这种情况下,只需使用file类创建一个文件,然后通过引用调用setReadOnly()方法


你可以把它写到DVD-R上,在那里可以替换,但是原件总是写着的。你是在寻找DVD-ROM吗?这是一种解决方案,但不幸的是,它的可扩展性不强,而且人们可能不太愿意插入DVD-ROM来运行程序:P这样做的用例是什么?如果有人运行我的程序并进行身份验证,我想确保网络来自服务器的服务到达用户注册我的程序的计算机,或者根本没有。(例如,如果有人复制程序和身份验证,并将其安装在另一台计算机上,我希望能够识别来自新计算机的请求是否无效)-我希望我没有混淆?o setWritable(true)是否足以再次写入?以后可能会更改文件的只读属性否?然后修改并设置该属性,这样我甚至不知道它发生了什么变化。但是可以直接使用另一个java进程来更改只读属性。是的,他们可以运行另一个进程,或者只需右键单击,选择“属性”并取消选中小框,然后继续处理文件。我可以运行另一个程序并再次将“可写”设置为“真”,不是吗?
Before. canWrite? true 
Set Writable False. canWrite? false 
Set Writable True. canWrite? false
    File f=new File("abc.txt");
    f.setReadOnly();