【问题标题】:Android Java: File seems to be locked after creating/writingAndroid Java:创建/写入后文件似乎被锁定
【发布时间】:2013-10-30 06:50:24
【问题描述】:

我是多年(10 年)的 .NET 开发人员,我在空闲时间第一次编写 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);
}

请告诉我如何确保在应用关闭后释放所有资源。

非常感谢您的帮助:-)

【问题讨论】:

  • 资源被释放,所以肯定是另一个问题。 "生成的 csv 文件可以在 android 文件资源管理器中查看,并且可以在 android 中打开内容。但是如果 我将智能手机连接到台式电脑,则csv 文件未显示在 Windows 文件资源管理器中。” 不同的文件夹?

标签: java android filelock


【解决方案1】:

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

所以this Stackoverflow question and answer 可能会帮助你。

Viel Glück 该死。

【讨论】:

  • 谢谢你,这对我有用:MediaScannerConnection.scanFile(this, new String[]{"your path here"}, null, null);维伦丹克!
猜你喜欢
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多