我编写了一个小代码,用于在带有目录的外部存储中以.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();
}
}
答案 0 :(得分:0)
缺陷在于您的逻辑。
如果目录ICS
已经存在,则您正在尝试写入该目录中的文件TEST.ics
。这应该工作。如果没有,您应该得到一个IOException
并查看其堆栈跟踪。
问题是目录是否不存在。在这种情况下,您的代码将创建目录,然后再执行其他操作。它还不会检测目录创建是否成功。因此不会创建文件。
相反,您需要进行两项更改:
directoryDIR.mkdir()
返回一个boolean
,以指示目录创建是否成功。您需要检查此返回值,并在收到false
时向用户报告。else
部分中。相反,不应该有else
部分,并且代码应该紧跟在if
语句之后,即紧接在它的}
大括号之后。