2010-06-11 13 views
15

Jestem początkującym Qt i właśnie utknąłem z problemem. Szukam pliku SomePath/NewDirectoryA/NewFile.kml (NewFile.kml będzie jedynym plikiem w NewDirectoryA, posiadającym ten katalog tylko po to, aby zachować semantykę w projekcie).Jak utworzyć nowy plik w Qt

Jeśli istnieje SomePath/NewDirectoryA/NewFile.kml, użyję go w moim kodzie, a jeśli nie istnieje, muszę go utworzyć. Jeśli ten plik nie istnieje, ten katalog również nie istnieje w SomePath. Więc jeśli tylko mam utworzyć plik, mogę użyć QFile i otworzyć go w trybie ReadWrite lub WriteOnly.

Ale problem polega na tym, że muszę utworzyć plik z samym katalogiem. Próbowałem z QFile z nazwą pliku SomePath/NewDirectoryA/NewFile.kml, ale nie zadziałało. Proszę zasugerować mi sposób, w jaki mogę utworzyć nowy plik (NewFile.kml) w nowym katalogu (NewDirectorA) w danej lokalizacji (SomePath).

Odpowiedz

33

bool QFile::open (tryb openMode) [virtual]

[...]

Uwaga: W trybie do zapisu lub ReadWrite, jeśli odpowiedni plik nie robi już istnieje, to funkcja spróbuje utworzyć nowy plik przed jego otwarciem.

zastrzeżenie Qt do tworzenia plików

Platform Specific Issues

uprawnienia plików są obsługiwane w różny sposób w systemach uniksowych i Windows. W katalogu, który nie jest zapisywalny na systemach uniksowych, nie można utworzyć plików . Nie zawsze tak jest w systemie Windows, gdzie w przypadku instancji katalog "Moje dokumenty" zwykle nie jest zapisywalny, ale możliwe jest utworzenie w nim plików .

katalogi są tworzone z

bool QDir::mkdir (const QString & DIRNAME) const

Tworzy podkatalog o nazwie DIRNAME.

i

bool QDir::mkpath (const QString & dirPath) const

Tworzy dirPath ścieżkę katalogu.

Ta funkcja utworzy wszystkie katalogi nadrzędne niezbędne do utworzenia katalogu .

+1

Nie mogę utworzyć pliku z wszystkimi niezbędnymi katalogami macierzystymi? –