2017-06-26 5 views
-3

にサインインするときに暗号化装置を使用して暗号化されたパスワードを保存しています。ログインが のときに復号化され、最終的にログインに使用されたパスワードと比較されます。 一致。私は資格情報を格納しています 方法は次のとおりです。FileReaderがtxtファイルの3行目だけを読み込む方法はありますか?

  • ユーザー名第一ライン上の
  • メール第二
  • パスワード第3回

にはどうすればファイルリーダーが読み取り専用に作るのですか3行目? 言語はJavaで、これはすべてJFrameフォームで行われています。

お時間をいただきありがとうございます。

+0

だから、今はどこにいるのですか? – Shark

+0

前の2つを読んでいない場合、3行目がどこから始まるのか、どうやって知りますか? – ControlAltDel

+0

私があなたの場合は、情報を1行に保存し、あらかじめ定義された文字を使用して区切ります。 :、#またはあなたのエントリーに存在しない他の文字。 – luizfzs

答えて

1

各セクションのバイト数を割り当てることをお勧めします。ユーザー名のために50文字、電子メールの50文字、パスワードは50個の文字を割り当てた場合、次の操作を実行できます。

私は、ファイルリーダーを作るにはどうすればよい
File f = ...; 
FileReader reader = new FileReader(f); 
fin.skip(100); 
char[] chars = new char[50]; 
int numCharsRead = fin.read(chars); //confirm numCharsRead is 50 
+0

RandomAccessFileのseek()を使うこともできます。これは基本的にskip()と同じです。 –

0
String file = "your_file_path"; 
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); 

String password = ""; 
boolean end = false; 
try { 
    while (true) { 
     reader.readLine(); 
     reader.readLine(); 
     password = reader.readLine(); 
     // do stuff with password 
    } 
} catch (EOFException e) { 
    // end of file reached. will break the loop 
} catch (IOException e) { 
    // handle exceptions 
} finally { 
    reader.close(); 
} 
1

3行目だけを読む?

できません。基本的には、読者はすべての行を読む必要があり、は、それが興味のない行を無視します。

ヒント:BufferedReader.readLine()を見てください。 @ noscreenameの答えを見てください。

FileReaderこれを行うことができない理由は、あなたがそれを完全に読むまで、それぞれの行がされるどのくらいかわからないということである。Reader.skip(...)を使用しているためか、RandomAccessFile.seek(...)をスキップするバイト数/文字数を知っているあなたを必要とし)、ここには適用されません。


ここでやっていることは悪い考えです。

  1. ユーザーを認証するたびにファイルからアカウント「レコード」を順番に読み取っても、スケールされません。あなたが持っているアカウントが多いほど、ログインに時間がかかります。

  2. パスワードをファイルに明示的に保存することは、セキュリティ上の弊害ではありません。ファイルに暗号化されたパスワードを格納することは、ほとんど悪いことです。代わりに、シードされたパスワードハッシュを保存する必要があります。ウィキペディアのページ(salt)を参照してください。

関連する問題