如何使文件夹在Java中不可读?

时间:2015-06-16 10:08:42

标签: java file windows-7 java-7 folder-permissions

我正在尝试将文件夹结构创建为Test1 / gotcha / Test3 我想让Test1不可靠。以下代码不起作用:

new File("D:\\Test1\\gotcha\\Test3").mkdirs();
PrintWriter writer= new PrintWriter("D:\\Test1\\gotcha\\Test3\\testing.txt");
writer.write("Hello");
writer.close();

File f1= new File("D:\\Test1");
f1.setReadable(false,false);
f1.setExecutable(false,false);

我仍然可以打开Test1文件夹。关于我如何解决这个问题的任何建议?

2 个答案:

答案 0 :(得分:0)

在Windows中无法使文件夹不可读,这就是Windows中的Select-Object -ExpandProperty不起作用的原因。

答案 1 :(得分:0)

无法做到。

  

一种方法是将该文件夹中文件的文件扩展名更改为随机名称,这样即使用户尝试打开它,也无法找到应用程序来执行此操作。

enter image description here

  

即使他发现可以使用文本编辑器打开它,我们也会加密它。所以它变得不可读。

enter image description here

这只是一个密钥替换密码。您可以使用更复杂的算法(如SHA或AES)来使其无法中断。

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

public class Demo 
{
    public static void main( String[] args )throws IOException
    {   
        File file = new File("C://temp//Hello1.sddf");// a random extension.
        // creates the file
        file.createNewFile();
        // creates a FileWriter Object
        FileWriter writer = new FileWriter(file); 
        String data = "Hello world!";//hello world is the data.
        // Writes the content to the file
        writer.write(encrypt(data)); 
        writer.flush();
        writer.close();
    }

    private static String encrypt(String data) {// I used a simple cipher I advise to use any other encryption technique.
        // TODO Auto-generated method stub
        String op = "";
        for(int i = 0; i < data.length(); i++)
            op += (char)(data.charAt(i) - 5);
        return op;
    }
}