Мне нужно открыть файл для записи.Если файл уже существует, я не хочу его усекать.
Другими словами, в простом C я бы сделал:
int fd = open("output.bin", O_WRONLY | O_CREAT, 0666);
// I don't mind using O_RDWR, btw.
Я пытаюсь сделать что-то подобноес GLib GFile (часть GIO).Сначала я попробовал:
g_file_create(gfile, G_FILE_CREATE_NONE, NULL, NULL);
Но это не удалось, если файл уже существует.
Я вижу, что есть около 5 других функций , которые возвращают GFileOutputStream
или GFileIOStream
, но я не вижу того, который делает то, что я хочу.
Я что-то упускаю?
Нужно ли разбивать эту простую задачу на несколькомаленькие?(проверка существования файла; если существует, создайте, иначе откройте; все как-то обернуто в блокировку.)
(Кстати, если это имеет значение: мой файл будет находиться в локальной файловой системе, а не в сетевой. ТакжеЯ работаю в Vala, поэтому я не просто использую open()
(возможно, я мог бы найти привязки для него, но я предпочитаю изучить способ выполнения GIO).