2013-04-09 11 views
5

Piszę aplikację dla wielu platform, która powinna tworzyć pliki w określonych zdarzeniach, teraz mam problem, jeśli mój cel znajduje się na dysku wymiennym lub dysku sieciowym Chcę najpierw utwórz plik w folderze tymczasowym na lokalnym dysku twardym, a następnie przenieś go do miejsca docelowego, aby uniknąć utraty danych w przypadku usunięcia ścieżki docelowej.Jak określić typ dysku przy użyciu podejścia wieloplatformowego

Teraz moje pytanie brzmi: jak powinienem wskazać typ ścieżki w podejściu wieloplatformowym?

+0

Co masz na myśli mówiąc "wskaż"? – didierc

+0

I dlaczego cię to obchodzi? Jeśli ścieżka docelowa zostanie usunięta podczas operacji zapisu, po wypróżnieniu bufora pojawi się komunikat o błędzie. – filmor

+0

Dlaczego po prostu nie wykonasz kopii z katalogu tymczasowego? – stdcall

Odpowiedz

0

Myślę, że będzie to dość trudne do osiągnięcia w niezawodny i przenośny sposób. Jestem pewien, że wszystkie platformy mają NIEKTÓRE możliwości sprawdzenia, czy dysk jest lokalny czy nie, ale pomyślałem, że o wiele prostszym i niezawodniejszym rozwiązaniem jest utworzenie lokalnego pliku tymczasowego, niezależnie od podstawowego systemu plików.

+0

Moja usługa ma naprawdę duże obciążenie i zawsze tworzy pliki na dysku lokalnym, a następnie przenosi je na dysk docelowy, tworzy dodatkową aktywność dla usługi, która nie jest wymagana w większości przypadków! – BigBoss

0

Jeśli używasz QtMobility, możesz użyć klasy QSystemStorageInfo.

+0

Nie używam 'Qt', używam' std :: iostream' i 'boost :: filesystem' – BigBoss

+0

W takim przypadku będzie to trudne. AFAIK Boost.FileSystem nie nadaje się do pracy. Musisz napisać swój własny kod dla każdej z obsługiwanych platform lub przyjąć prostsze podejście, w którym zawsze piszesz do pliku tymczasowego, a dopiero potem przenosisz go na miejsce. –

Powiązane problemy