我制作了一个代码,用于更改本地程序中的密码。它工作得非常好,但我遇到了一个小问题。如果我将新密码更改为“”(没有),那么正在读取密码的文件如果我将该字段留空则不起作用。如果我输入像“嘿”这样的普通密码,它可以正常工作。密码存储在txt文件中,所以问题是,空的JTextField不等于空的日志文件..为什么?我需要解决这个问题。我希望它能够使用密码(没有),但是一些替代修复也会很酷。
此代码检查密码:
check是来自readfile的字符串,password是来自textfield的字符串。
if(event.getSource()==tf&&password.equals(check)){
try{
Runtime.getRuntime().exec("C:\\Windows\\System32\\notepad C:\\Applications\\Infostore.txt");
}catch(IOException ex){
ex.printStackTrace();
}
System.exit(1);
}else{
JOptionPane.showMessageDialog(null,"Wrong password");
}
密码创建者是一个普通的文件撰写者,它从文本字段中获取内容,并将其写入txt文件。
答案 0 :(得分:2)
在保存密码之前测试JTextField的值。
if (textField.getText()==null) passwd = "";
答案 1 :(得分:1)
当扫描程序读取您的文本文件时,如果它在文件末尾读取一个空字符串,则它将假定该字符串为null
。这就是为什么在完成写入文件后,使用BufferedWriter.newLine()
在文件末尾添加新行可能总是更好。
否则,如果您希望坚持不添加新行,或者它不起作用,请尝试将其添加到您的密码检查中:
if(check == null)
检查字符串是否为空的原因就像我之前所说的那样,可能是因为扫描程序认为它是文件的结尾并将check
字符串返回为null。