filewriter和filereader问题

时间:2013-12-29 14:02:24

标签: java jtextfield filereader filewriter

我制作了一个代码,用于更改本地程序中的密码。它工作得非常好,但我遇到了一个小问题。如果我将新密码更改为“”(没有),那么正在读取密码的文件如果我将该字段留空则不起作用。如果我输入像“嘿”这样的普通密码,它可以正常工作。密码存储在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文件。

2 个答案:

答案 0 :(得分:2)

在保存密码之前测试JTextField的值。

if (textField.getText()==null) passwd = "";

答案 1 :(得分:1)

当扫描程序读取您的文本文件时,如果它在文件末尾读取一个空字符串,则它将假定该字符串为null。这就是为什么在完成写入文件后,使用BufferedWriter.newLine()在文件末尾添加新行可能总是更好。

否则,如果您希望坚持不添加新行,或者它不起作用,请尝试将其添加到您的密码检查中:

if(check == null)

检查字符串是否为空的原因就像我之前所说的那样,可能是因为扫描程序认为它是文件的结尾并将check字符串返回为null。