Java GUI Swing,从.txt文件读取

时间:2012-05-05 16:43:50

标签: java security swing user-interface serialization

好的,我想知道是否有人可以详细解释如何让我的JPasswordField将输入的内容保存到.txt文件中。因此,当我再次打开程序时,我可以让该人登录,如果是密码,它将获得。如果是密码,那么JOptionPane将关闭。我在JFrame中拥有这一切,并且“登录”按钮位于JMenu的JMenuBar中,名为“File”。在文本文件中,我想让用户输入用户名和密码,并为该用户设置用户名和密码,如下所示。 恩。

用户名=加文

密码= 123

因此,如果有方法只存储某个变量,该文本文件并使程序加载该变量值,那么如果你能解释的话会很棒。我也非常愿意接受勺子喂食,因为我不只是采取和使用它,不。我要看看它,弄清楚它为什么有效,因为我将以不同的方式重复它。提前谢谢!

P.S。是的,我确实做了一些研究,但问题是,人们会把一些我不知道如何开始工作的代码,我对Java编程很新。所以,请粘贴代码,我会研究它们,但是如果你也可以稍微解释一下。

1 个答案:

答案 0 :(得分:-2)

我相信这正是您所寻找的 - http://cs.saddleback.edu/rwatkins/CS4B/Crypto/FileEncryptor.html

代码有详细记录,但如果您有任何问题,请问他们,我会尝试回答他们

这是使用加密做到这一点的最简单方法(可能)。这绝对是个好主意。然而,只需编写和阅读文本文件的简单部分可以通过

完成
39:       filename = "clear.txt";
40: 
41:       // Password must be at least 8 characters (bytes) long
42: 
43:       String password = "super_secret";
44: 
46:       outFile = new FileOutputStream(filename);
80:       outFile.write(password);

和这个方法来阅读哪个更复杂,但我会尝试解释它

private static String readFileAsString(String filePath) throws java.io.IOException{
    byte[] buffer = new byte[(int) new File(filePath).length()];
    BufferedInputStream f = null;
    try {
        f = new BufferedInputStream(new FileInputStream(filePath));
        f.read(buffer);
    } finally {
        if (f != null) try { f.close(); } catch (IOException ignored) { }
    }
    return new String(buffer);
}

基本上,byte []是一个原始1和0的数组(如果你不确定那是什么)。它将文件的所有1和0放入和数组(与文件的长度相同,即(int)new File(filePath)。length())然后fileinputstream执行所有精彩的魔术来转换这些1和0到文本。 BufferedinputStream只是fileinputstream的一个有效包装器,因为它一次读取大量字节然后同时将它们全部转换(它将它们存储在缓冲区中,因此名称),而不是一次读取和转换1个字节并且效率低下(FileInputStream本身)。您想要谷歌的例外情况,但基本上只是因为如果您找不到该文件或者您没有从中读取/写入的权限,您的程序就不会崩溃。