0

Windowsを使用するときに手動でlogファイルを作成する方法は次のとおりです。

  • メモ帳を開く
  • .LOG大文字で書く
  • ファイルを閉じる

次回ファイルを開くと、現在の日付/時刻のエントリが自動的に追加されます。好き :

.LOG
11:33 AM 07-Oct-12

ファイルを閉じようとすると、保存するかどうかを尋ねられます。[保存]をクリックすると、次に12:20 P.M 07-Oct-2012そのファイルを開くと言うと、次のようになります。

.LOG
11:33 AM 07-Oct-12

12:20 P.M 07-Oct-2012

次回[保存しない]をクリックすると、ファイルは次のようになります。

.LOG
12:20 P.M 07-Oct-2012

上記は、ログを手動で保存する方法です。私はプログラムを使ってこれをやろうとしています。LOGという名前のファイルをすでに作成しましたが.LOG、その後に改行があります。しかし、このファイルに次のようなエントリを書き込んでからfirst entry、ファイル/ライターを閉じてから、もう一度開いて次のような新しいエントリを書き込むとsecond entry、両方が次々に追加されますが、別々の日時の見出しの下には追加されません。どうしてこれなの ?その特定のファイルを(プログラムではなく)手動で開くと、現在の日付と時刻のエントリが追加されるためです。クリックでファイルを開くことと、ファイルを開くことの違いはありますFileReader/FileWriterか?

これが、新しい日付/時刻の見出しの下にある新しいエントリごとにログファイルに書き込もうとした方法です。

        try {
        File f = new File("C:/Users/user/Desktop/LOG.txt");
        if(f.exists()) {
            System.out.println("exists");
            FileWriter writer = new FileWriter(f,true);
            String content = jTextArea1.getText();
            writer.write(content);
            writer.close();

            FileReader reader = new FileReader(f);
            int x;
            while( (x = reader.read() ) > 0) {
                System.out.print((char)x);
            }
            reader.close();
        }
    }catch(Exception exc) {
        System.out.println(exc);
    }

上記のスニペットは、最初にLOG.txtという名前のログファイルにエントリを書き込み、次にそのファイルからの読み取りを試みます。たとえば、最初のファイルは次のようになります。

.LOG

エントリを追加した後、最初のログとして次のようになります。

.LOG
first log

私はそれが次のように見えることを期待するとき:

.LOG
12:20 P.M 07-Oct-2012
first entry..
12:23 P.M 07-Oct-2012
second entry..
12:28 P.M 07-Oct-2012
third entry..   

しかし、私が新しいエントリを追加し続けると、それは次のように進み続けます:

.LOG
first entry..second entry..third entry...

ディレクトリに移動してダブルクリックしてファイルを開くと、日付/時刻のエントリがファイルに追加され、次のように表示されます。

    .LOG
    first entry..second entry..third entry...
    12:20 P.M 07-Oct-2012

何故ですか ?指示です:

FileReader reader = new FileReader(fileObject);
// read
reader.close();

最初にダブルクリックしてから十字をクリックしてファイルを保存することでファイルを開いたり閉じたりすることと同じではありませんか?

注: 〜参照:メモ帳を使用してログファイルを作成する方法(Microsoft)

4

0 に答える 0