0

テキストファイルからユーザー名とパスワードを読み取ることができるログイン画面を作成しようとしています。以下を実行して、ユーザー名とパスワードをファイルに出力する登録ページを既に作成しています。

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 ファイルに読み書きし続けることができるようにするためです。

誰かが何らかの形で私を助けることができれば、それは素晴らしいことです!

ありがとう

4

2 に答える 2

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;

  }
}
于 2012-04-18T00:19:28.567 に答える
0

上記のコードを特定のユーザー名とパスワードに対して実行するのか、それともすべてに対して実行するのか、よくわかりません。

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

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

于 2012-04-18T00:30:49.337 に答える