首页 > 解决方案 > .ICS 文件未显示在文件夹中

问题描述

我编写了一个小代码,用于在带有目录的外部存储中创建 .ics 格式的文件。现在的问题是 .ics 文件没有显示在目录中。当我将其更改为 .txt 格式时,它正在显示。这段代码有什么问题?

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR    

String begin = "BEGIN:VCALENDAR";

public void generateNoteOnSD(Context context) {
    try {
        String filename = "TEST.ics";
        FileOutputStream bw = openFileOutput(filename, MODE_PRIVATE);
        byte b[] = begin.getBytes();
        bw.write(b);
        bw.close();
        Log.d("successful", "written complete");
        Toast.makeText(context, "Saved", Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

标签: androidicalendarandroid-calendar

解决方案


缺陷在于你的逻辑。

如果该目录ICS已存在,则您正在尝试写入TEST.ics该目录中的文件。这应该有效。如果没有,你应该得到一个IOException并查看它的堆栈跟踪。

问题是该目录是否不存在。在这种情况下,您的代码会创建目录,然后什么也不做。它也不会检测目录的创建是否成功。所以文件没有被创建。

相反,您需要进行两项更改:

  • directoryDIR.mkdir()返回一个boolean表示目录创建是否成功。你需要检查这个返回值,如果你得到false.
  • 编写文件的代码不应进入该else部分。相反,不应该有一个else部分,并且代码应该在if语句之后,即在它的右}大括号之后。

推荐阅读