android - .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();
}
}
解决方案
缺陷在于你的逻辑。
如果该目录ICS
已存在,则您正在尝试写入TEST.ics
该目录中的文件。这应该有效。如果没有,你应该得到一个IOException
并查看它的堆栈跟踪。
问题是该目录是否不存在。在这种情况下,您的代码会创建目录,然后什么也不做。它也不会检测目录的创建是否成功。所以文件没有被创建。
相反,您需要进行两项更改:
directoryDIR.mkdir()
返回一个boolean
表示目录创建是否成功。你需要检查这个返回值,如果你得到false
.- 编写文件的代码不应进入该
else
部分。相反,不应该有一个else
部分,并且代码应该在if
语句之后,即在它的右}
大括号之后。
推荐阅读
- c - Azure IoT Hub:没有 SDK 的 HTTP 设备到云消息?
- php - 从 laravel eloquent 资源集合中隐藏属性关系
- java - maven sonarqube 插件是否读取故障安全报告?
- django - 将 Logger 的 Django 测试输出重定向到文件
- python - 如何从数据库中选择特定数据并将其呈现到 django 模板?
- python - 为什么在尝试读取不存在的 s3 密钥时会出现不同的错误
- javascript - Variable assignment in class scope works in React but not in ES6
- reactjs - onClick 事件时翻转图像
- c - 得到无符号长长加法进位
- r - R:grepl 以错误的顺序输出匹配项