Java 正在锁定CACL不工作的文件夹

Java 正在锁定CACL不工作的文件夹,java,directory,cacls,Java,Directory,Cacls,所以我一直在尝试制作一个可以锁定文件夹的应用程序。直到我添加了一个jtextfield,您可以在其中指定文件夹的路径和文件夹的名称,它才正常工作 这是用于锁定和解锁文件夹的阵列: String[] lock = new String[]{"cmd.exe", "/C", "cd \"" + String.valueOf(path.getText())+ "\" && dir", "&", "cacls", String.valueOf(name.getText()), "

所以我一直在尝试制作一个可以锁定文件夹的应用程序。直到我添加了一个jtextfield,您可以在其中指定文件夹的路径和文件夹的名称,它才正常工作

这是用于锁定和解锁文件夹的阵列:

String[] lock = new String[]{"cmd.exe", "/C", "cd \"" + String.valueOf(path.getText())+ "\" && dir", "&", "cacls", String.valueOf(name.getText()), "/e", "/c", "/d", "%username%"};
String[] unlock = new String[]{"cmd.exe", "/C", "cd \"" + String.valueOf(path.getText())+ "\" && dir", "&", "cacls", String.valueOf(name.getText()), "/e", "/c", "/g", "%username%:f"};
这是两个按钮的动作侦听器:

block.addActionListener(e -> {
        if (password.getText().toString().equals(passwordText)) {
            try {
                Process p = Runtime.getRuntime().exec(lock);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        } else {
            password.setText("");
            passwordLabel.setText("Incorrect password");
            failed.get().start();
        }


    });
unblock.addActionListener(e -> {
        if (password.getText().toString().equals(passwordText)) {
            try {
                Process p = Runtime.getRuntime().exec(unlock);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        } else {
            password.setText("");
            passwordLabel.setText("Incorrect password");
            failed.get().start();
        }

    });

当我直接指定路径和名称时,它工作得很好,但现在它什么都不做。(对不起,我的英语不好。请随时纠正我)

您的错误是在JTextFields中存在有效值之前初始化变量
lock
unlock
(此时,字段值为空字符串或null)。相反,您应该在调用
Runtime.exec

之前初始化它们:System.out.println(String.valueOf(path.getText());System.out.println(String.valueOf(name.getText());输出?我在JText字段中输入的文件夹路径和文件夹名称的值。我没有把所有的代码都包括在这里。是的,我理解了。打印你在文本字段中输入的文本,但我的意思是我们能看到它吗?您是否100%确定您以前使用的cosntant与textfield中的文本之间没有差异?这是我使用的全部代码: