【问题标题】:Java GUI Swing, reading from .txt fileJava GUI Swing,从 .txt 文件中读取
【发布时间】:2012-05-05 16:43:50
【问题描述】:

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

用户名 = Gavin

密码 = 123

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

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

【问题讨论】:

  • Basic IO tutorial。此外,您可能希望加密该密码。
  • 另外,请确保不要将密码转换为字符串(请参阅stackoverflow.com/questions/10443308/…
  • “人们会放一个我不知道它如何开始工作的代码”(颤抖)你的用户不应该在运行时信任你的密码——时间,更不用说你去序列化它们的时候了。
  • @Jeffrey 他绝对应该散列那个密码。

标签: java security swing user-interface serialization


【解决方案1】:

我相信这正是您正在寻找的 - 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 的数组(如果您不确定那是什么,请用 Google 搜索)。它将文件的所有 1 和 0 放入数组(与文件的长度相同,即 (int) new File(filePath).length())然后文件输入流会发挥所有奇妙的魔力来将这些 1 和 0成文字。 BufferedinputStream 只是文件输入流的一个有效包装器,因为它一次读取大量字节,然后同时将它们全部转换(它将它们存储在缓冲区中,因此得名),而不是一次读取和转换 1 个字节,这很慢并且效率低下(FileInputStream 本身)。你想用谷歌搜索的例外情况,但基本上它只是为了让你的程序在你找不到文件或者你没有读取/写入权限时不会崩溃。

【讨论】:

  • 我看了看它,它看起来非常复杂,我认为这对于我现在所处的位置来说要先进得多。感谢您的回答,我仍然会研究这段代码,并且我将研究这些我以前从未见过的术语,例如字节[],主要方法抛出异常?我以前从未见过。
  • -1:基于密码的加密与OP的要求无关,你的IO代码充满了bug。
  • 是的,正如 JB Nizet 所说,我不想要密码加密器,主要是因为这只是为了我的练习,而不是发布或任何东西......有人可以帮我解决这个问题吗?跨度>
猜你喜欢
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 2016-05-27
  • 1970-01-01
相关资源
最近更新 更多