我是.NET开发人员多年(10年),我在空闲时间第一次编写android java。 我编程的应用程序是一个用于某些课程参与者的输入数据的应用程序。课程讲师输入一些课程编号(这是文件名的一部分),每个参与者输入他的名字和生日。所以我有两个活动。一个是讲师,一个是参与者。
第一个活动在下载文件夹中创建文件,第二个活动在CSV文件的末尾附加参与者数据。到目前为止,对于C#.net开发人员来说没问题,因为java语法就像c#语法。该应用程序在一周内编程。
但是现在在测试中发生以下问题:生成的csv文件可以在android文件浏览器中的android上查看,内容可以在android中打开。但是,如果我将智能手机连接到台式机,则Windows文件浏览器中不会显示csv文件。
如果我重新启动智能手机,该文件仅显示在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);
}
请让我知道如何确保在应用关闭后释放所有的ressorces。
非常感谢你的帮助: - )
答案 0 :(得分:0)
它不是锁定文件,而是Android处理新文件条目的方式。好消息是,看起来其他人之前遇到过问题而且有人似乎已经解决了这个问题。
所以this Stackoverflow question and answer可能对您有所帮助。
VielGlück该死的。