创建只读文件

我想知道是否可以在创建时创建或模拟具有内容集的文件,并确保没有人可以更改文件。 如果可能的话,我可以在java中做到吗?

将文件设置为只读是不可能的,所以没有人可以改变它。 取消设置只读标志大约需要3秒钟。 然后可以在hex编辑器或其他可以处理文件类型的程序中打开该文件,并可以进行更改。

尝试:

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

是的,我们可以使用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()); } } 

为了使它成为setWritable(true)不能再次启用,你可以扩展File并覆盖setWritable()方法。

 import java.io.File; import java.io.IOException; import java.lang.Override; public class FileAttributeDemo2 { private static class ReadOnlyFile extends File { public ReadOnlyFile(String pathname) { super(pathname); } @Override public boolean setWritable(boolean writeable) { return setWritable(writeable, true); } @Override public boolean setWritable(boolean writeable, boolean ownerOnly) { if (!writeable) { return super.setWritable(false, ownerOnly); } return false; } } public static void main (String[] args) throws IOException { File file = new ReadOnlyFile("test.txt"); if (file.exists()) { file.delete(); } file.createNewFile(); System.out.println("Before. canWrite? " + file.canWrite()); file.setWritable(false); System.out.println("Set writable false. canWrite? " + file.canWrite()); file.setWritable(true); System.out.println("Set writable true. canWrite? " + file.canWrite()); } } 

产生输出:

 Before. canWrite? true Set Writable False. canWrite? false Set Writable True. canWrite? false