-1

好的,我想知道是否有人可以非常详细地解释如何让我的 JPasswordField 将输入的内容保存到 .txt 文件中。所以当我再次打开程序时,我可以让那个人登录,它会得到是否是密码。如果是密码,则 JOptionPane 将关闭。我把这一切都放在一个 JFrame 中,“登录”按钮在一个 JMenu 中的一个 JMenuBar 中,名为“文件”。在文本文件中,我想让用户输入用户名和密码,它会为该用户设置用户名和密码,如下所示。前任。

用户名 = 加文

密码 = 123

因此,如果有办法将某个变量存储到该文本文件并让程序加载该变量值,如果您能解释一下,那就太好了。我对用勺子喂食也很开放,因为我不只是服用和使用它,不。我要看看它,弄清楚它为什么起作用,因为我要以不同的方式复制它。提前致谢!

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

4

1 回答 1

-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 只是文件输入流的一个有效包装器,因为它一次读取大量字节,然后同时将它们全部转换(它将它们存储在缓冲区中,因此得名),而不是一次读取和转换 1 个字节,这很慢并且效率低下(FileInputStream 本身)。你会想用谷歌搜索的例外情况,但基本上它只是为了让你的程序在你找不到文件或者你没有读取/写入权限的情况下不会崩溃。

于 2012-05-05T16:55:50.787 回答