-1

さて、JPasswordFieldに入力した内容を.txtファイルに保存する方法を誰かが詳細に説明できるかどうか疑問に思っていました。そのため、プログラムを再度開くと、その人にログインさせることができ、それがパスワードかどうかを取得できます。パスワードの場合、JOptionPane は閉じます。これはすべてJFrameにあり、「ログイン」ボタンは「File」という名前のJMenuのJMenuBarにあります。テキスト ファイルで、ユーザーにユーザー名とパスワードを入力してもらいたいのですが、このようにユーザー名とパスワードがそのユーザーに設定されます。元。

ユーザー名 = ギャビン

パスワード = 123

そのため、特定の変数をそのテキスト ファイルに保存し、プログラムにその変数の値をロードさせる方法があれば、説明できれば幸いです。私はスプーンで食べるだけではないので、スプーンで食べることにも非常にオープンです。私はそれを見て、なぜそれが機能するのかを理解します。なぜなら、別の方法で複製することに取り組むからです. 前もって感謝します!

PS はい、私はいくつかの調査を行いましたが、問題は、人々がどのように動作するかについての手がかりのないコードを配置することです。私は Java プログラミングにまったく慣れていません。ですから、コードを貼り付けてください。私はそれらを研究しますが、マイナーな説明も追加できれば.

4

1 に答える 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);
}

基本的に byte[] は生の 1 と 0 の配列です (それが何かわからない場合はググってください)。ファイルのすべての 1 と 0 を配列に入れます (つまり、ファイルと同じ長さです。すなわち (int) new File(filePath).length()) 次に、fileinputstream がこれらの 1 と 0 を変換するすべてのすばらしい魔法を実行します。テキストに。BufferedinputStream は、fileinputstream の効率的なラッパーにすぎません。一度に大量のバイトを読み取り、それらをすべて同時に変換するためです (バッファーに格納するため、名前が付けられています)。非効率的です(FileInputStream自体)。グーグルで検索したい例外ですが、基本的には、ファイルが見つからない場合やファイルの読み取り/書き込み権限がない場合にプログラムがクラッシュしないようにするためです。

于 2012-05-05T16:55:50.787 に答える