0

我正在尝试创建一个文件夹结构为 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 文件夹。关于如何解决这个问题的任何建议?

4

2 回答 2

1

在 Windows 中无法使文件夹不可读,这就是setReadable()在 Windows 中不起作用的原因。

于 2015-06-16T10:13:27.447 回答
1

那是做不到的。

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

在此处输入图像描述

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

在此处输入图像描述

这只是一个密钥替换密码。您可以使用更复杂的算法,如 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;
    }
}
于 2015-06-16T10:42:28.040 回答