2012-04-18 3 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ファイルを読み書きすることができるようにするためです。

誰かがどんな形であっても、驚くべき形の形をしてくれたら助けてくれますか?

おかげ

C

+0

パスワードをプレーンテキストで保存することは非常に悪いことです。 – emory

+0

私は知っている、私は通常それを行うwouldntが、私は本当にパスワードのフォームを必要としないものを作っているが、私はファイルから行を読むことを学びたい... – Charlie

+0

私は "ジョージワシントン"と "彼の国の父"私のユーザー名とパスワードとして、あなたのシステムは何をしますか? – emory

答えて

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

これははるかに理にかなっています!これは、ユーザー名とパスワードの両方の文字列を 'username password'という文字列に結合し、この新しい結合文字列をテキストファイル内の行と比較する必要があることを意味します。 – Charlie

+0

これはこれを行う1つの方法です。関数呼び出しで2つの文字列を渡すことができます。そして、ファイルの各行を読み取ると、2つの文字列に分割し、渡された引数と比較します。これは、ユーザー名またはパスワードにスペースを入れない場合にのみ発生します。あなたに最適なものによって異なります。 – Chris911

0

は、私は本当にあなたが特定のユーザー名とパスワード、またはそれらのすべてのために、上記のコードを実行するかどうかわかりません。

ファイルから特定の行を取得したい場合、すでに読みたい行のオフセットにアクセスできる場合は、RandomAccessFileを使用できます。このクラスを使用すると、ファイルポインタを特定の位置に移動し、次の行を読み込んでユーザー名とパスワードを取得できます。

ただし、特定の行を読み込みたいが、その行が入力ファイル内にある可能性のある情報がない場合は、必要な行を見つけるために各行(たとえば、BufferedReaderを使用)を読み取る必要があります。ファイルを1行ずつ読み込みたい場合は、この方法をとることもできます。

関連する問題