1

我是 .NET 开发人员多年(10 年),我在空闲时间第一次编写 android java。我正在编写的应用程序是用于输入某些课程参与者的数据的应用程序。课程讲师输入一些课程编号(这是文件名的一部分),每个参与者输入他的姓名和出生日期。所以我有两个活动。一份给导师,一份给参与者。

第一个活动在下载文件夹中创建文件,第二个活动将参与者数据附加到 CSV 文件的末尾。到目前为止,对于 C#.net 开发人员来说没有问题,因为 java 语法类似于 c# 语法。该应用程序在一周内完成编程。

但是现在在测试过程中出现以下问题:生成的csv文件可以在android文件资源管理器中查看,并且可以在android中打开内容。但是,如果我将智能手机连接到台式电脑,则 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

0

这不是锁定文件,而是 Android 处理新文件条目的方式。好消息是,看起来以前有人遇到过这个问题,而且似乎已经有人解决了。

所以这个 Stackoverflow 问题和答案可能会对你有所帮助。

维尔格吕克该死。

于 2013-10-30T07:19:57.943 回答