1

私は長年 (10 年) .NET 開発者であり、空き時間に初めて Android Java をプログラミングしています。私がプログラミングしているアプリケーションは、コース参加者の入力データ用のアプリです。コースのインストラクターはコース番号 (ファイル名の一部) を入力し、各参加者は自分の名前と生年月日を入力します。ですから、私の活動は2つあります。1 つはインストラクター用、もう 1 つは参加者用です。

最初のアクティビティはダウンロード フォルダにファイルを作成し、2 番目のアクティビティは CSV ファイルの末尾に参加者データを追加します。Java 構文は C# 構文に似ているため、これまでのところ C#.net 開発者にとっては問題ありません。アプリは 1 週間でプログラムされました。

しかし、テスト中に次の問題が発生します。生成された csv ファイルは、android ファイル エクスプローラーで android で表示でき、コンテンツは android で開くことができます。しかし、スマートフォンをデスクトップ PC に接続すると、csv ファイルが Windows ファイル エクスプローラーに表示されません。

スマートフォンを再起動すると、ファイルはWindowsファイルエクスプローラーにのみ表示されます。close メソッドでファイルを閉じてアプリケーションを終了しても、コードはリソースを解放していないようです。

次のコードで何が間違っていますか。

public boolean CreateFile() {
    boolean OK = false;

    File file = new File(_FileName);
    if (!file.exists()) {
            try {                   
                    if (file.createNewFile())
                    {
                        _StatusText.setText( "Status:Leere Kurs-Teilnehmer-Datei angelegt:\n" + _FileName + ".csv");
                        OK = true;
                    }
                    else
                        _StatusText.setText("Status:Datei nicht angelegt");                     
            } catch (Exception e) {
                _StatusText.setText("Status:Fehler:" + e.toString());
            }
            finally {
                return OK;
            }
    }
    else
    {
        _StatusText.setText("Status:Bereits Vorhandene Kursliste wird verwendet");
        return true;
    }
}

これは、csv ファイルの末尾に行を追加するためのコードです。

public static void AppendDataToCSV(String Filename, String Nachname, String Vorname, String Datum) throws IOException {
    FileWriter out = null;
    try {
        StringBuilder textline = new StringBuilder();
        textline.append(Nachname)
        .append(";")
        .append(Vorname)
        .append(";")
        .append(Datum)
        .append("\n");

        out = new FileWriter(Filename, true);
        out.write(textline.toString());
    }
    finally {
        if (out != null)
            out.close();            
    }
}

これは、アプリケーションを終了するためのコードです。

private void ButtonEndeClick(){
    _StatusText.setText("Ende");
    finish();
    System.exit(0);
}

アプリを閉じた後にすべてのリソースが確実に解放されるようにする方法を教えてください。

あなたの助けに感謝します:-)

4

1 に答える 1