2012-05-05 173 views
-1

好的,我想知道是否有人可以詳細解釋如何讓我的JPasswordField保存輸入到.txt文件中的內容。因此,當我再次打開該程序時,我可以讓該人員登錄,如果密碼與否,將會得到該人員。如果是密碼,那麼JOptionPane將關閉。我將這一切全部放在JFrame中,並且「登錄」按鈕位於JMenu中名爲「File」的JMenuBar中。在文本文件中,我希望讓用戶輸入用戶名和密碼,並且會爲該用戶設置用戶名和密碼,如下所示。 ex。Java GUI Swing,讀取.txt文件

用戶名=加文

密碼= 123

因此,如果有隻是存儲某個變量,該文本文件的方式,使程序加載的變量值,這將會是巨大的,如果你可以解釋。我也對湯匙餵食非常開放,因爲我不只是採取和使用它,不。我將着眼於它,弄清楚它爲什麼會起作用,因爲我要以不同的方式複製它。提前致謝!

P.S.是的,我做了一些研究,但問題是,人們會將代碼放在我不知道如何開始工作的線索上,我對Java編程很少有新意。所以,請粘貼代碼,我會研究它們,但是如果你還可以提出一個小的解釋。

+2

[基本IO教程](http://docs.oracle.com/javase/tutorial/essential/io/)。另外,您可能需要加密該密碼。 – Jeffrey

+1

此外,請確保您不會將密碼轉換爲字符串(請參閱http://stackoverflow.com/questions/10443308/why-gettext-in-jpasswordfield-was-deprecated) – Robin

+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); 
} 

基本上字節[ ]是一個數組(谷歌它,如果你不知道這是什麼)的原始1和0。它將文件的所有1和0放入數組中(與文件長度相同,即(int)new File(filePath).length())然後,文件輸入流將所有奇妙的魔法變爲1和0成文本。 BufferedinputStream對於fileinputstream只是一個有效的包裝,因爲它一次讀取大量字節,然後將它們全部同時轉換(它將它們存儲在緩衝區中,因此存儲在名稱中),而不是讀取和轉換1個字節,並且效率低下(FileInputStream本身)。你想要谷歌的例外,但基本上它只是如此,如果你無法找到該文件或你沒有權限讀/寫它的程序不會崩潰。

+0

我看着它,它看起來非常複雜,我認爲這是更先進的方式,以我在哪裏,在這一點上。我很感謝你的回答,我仍然會研究這段代碼,並且我將研究這些我以前從未見過的術語,比如bytes [],主要方法會拋出異常嗎?我以前從來沒有見過。 – Gavin

+1

-1:基於密碼的加密與OP所要求的內容無關,而且您的IO​​代碼充滿了錯誤。 –

+0

是的,JB Nizet說什麼,我不想要一個密碼加密器,主要是因爲這只是爲了我的練習,而不是釋放或任何東西......有人可以幫我解決這個問題嗎? – Gavin