Файл .ICS не отображается в папке - PullRequest
0 голосов
/ 21 декабря 2018

Я написал небольшой код для создания файла в формате .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();
    }
}

1 Ответ

0 голосов
/ 22 декабря 2018

Недостаток в вашей логике.

Если каталог ICS уже существует, вы пытаетесь записать файл TEST.ics в этом каталоге.Это должно работать.А если этого не произойдет, вы должны получить IOException и посмотреть его трассировку стека.

Проблема в том, что каталог еще не существует.В этом случае ваш код создает каталог и больше ничего не делает.Он также не определяет, удалось ли создать каталог.Таким образом, файл не создан.

Вместо этого вам нужны два изменения:

  • directoryDIR.mkdir() возвращает boolean, чтобы указать, было ли создание каталога успешным.Вам необходимо проверить это возвращаемое значение и сообщить пользователю, если вы получите false.
  • Код для записи файла не должен входить в часть else.Вместо этого не должно быть части else, а код должен идти только после оператора if, то есть после закрывающей скобки }.
...