I was wondering wether it is possible to create or simulate a file with a content set at creation and the assurance that nobody can ever change the file. If possible, can I
To make it so setWritable(true) does not enable writing again you could extend File and override the setWritable() methods.
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());
}
}
which produces the output:
Before. canWrite? true
Set Writable False. canWrite? false
Set Writable True. canWrite? false