2012-04-18 88 views
0

我正在嘗試創建一個可以從文本文件讀取用戶名和密碼的登錄屏幕。我已經建立了其通過執行以下輸出到文件中的用戶名和密碼註冊頁面:搜索一行文本文檔 - JAVA

try (BufferedWriter out = new BufferedWriter(fstream)) { 
      try { 
       out.write(username + " " + password); 
       out.newLine(); 
       JOptionPane.showMessageDialog(null,"User Account '" + username + "'  Created"); 
      } catch (IOException ex) { 
       Logger.getLogger(ServerMenu.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 

的文本文件將看起來像這樣:

user1 password1 
user2 password2 

我已通過閱讀很多文檔試圖找出這一點,但是我做的閱讀越多,我就越困惑。我這樣做的原因是,我可以繼續閱讀和寫入.dat文件,以獲取系統最終將保存的信息。

如果有人能以任何形式幫助我,那將是驚人的形式!

感謝

Ç

+0

以純文本存儲密碼是非常糟糕的做法。 – emory 2012-04-18 00:04:14

+0

我知道,我通常不會這樣做,但我正在做一些真的不需要密碼錶單,但我想學習從文件中讀取一行...... – Charlie 2012-04-18 00:13:20

+0

如果我選擇「喬治華盛頓」和「他的國家之父「分別作爲我的用戶名和密碼,你的系統會做什麼? – emory 2012-04-18 00:18:37

回答

1

快速和簡單的解決方案。每條評論都有評論,但如果您需要任何幫助或者有任何不明白的地方,請告訴我們。

import java.io.*; 
class FileRead 
{ 
public static boolean main(String lineToCompare) 
    { 
    try{ 
    // Open the file that is the first 
    // command line parameter 
    FileInputStream fstream = new FileInputStream("textfile.txt"); 

    // Get the object of DataInputStream 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

    String strLine; 
    //Read File Line By Line 

    while ((strLine = br.readLine()) != null) { 
    //Compare the line with the line to compare (string) 
    if(strLine.compareTo(lineToCompare) == 0) 
     return true; 
    } 

    //Close the input stream 
    in.close(); 
    }catch (Exception e){//Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
    } 

    return false; 

    } 
} 
+0

好吧,這使得更有意義!這意味着我將不得不將用戶名和密碼的兩個字符串組合成一個字符串,即'用戶名密碼',並將這個新的組合字符串與文本文件中的行進行比較? – Charlie 2012-04-18 00:28:47

+0

這是一種方法。您可以在函數調用中傳遞2個字符串,然後當您讀取文件中的每行時,將其分成2個字符串,並將它們與傳遞的參數進行比較。只有在您不接受用戶名或密碼空格的情況下。取決於最適合你的東西。 – Chris911 2012-04-18 00:33:53

0

我真的不確定你是否想對特定的用戶名和密碼或全部執行上述代碼。

如果您想從文件中獲取特定的行,並且您已經可以訪問要讀取的行的偏移​​量,則可以使用RandomAccessFile。這個類允許你將文件指針移動到某個位置,然後你可以簡單地閱讀下一行來獲取用戶名和密碼。

但是,如果您想要讀取特定的行,但沒有關於該行可能位於輸入文件中的信息,則需要讀取每行(例如,使用BufferedReader)以找到您需要的行。如果你想逐行閱讀文件,你也可以採用這種方法。