2013-04-09 47 views
5

我正在編寫一個跨平臺的應用程序,該應用程序應該在某些事件上創建文件,現在我遇到問題,如果我的目標位於可移動磁盤或我想先移動的網絡驅動器上在本地硬盤上的臨時文件夾中創建該文件,然後將其移動到目標位置,以避免在刪除目標路徑時丟失數據。如何使用跨平臺方法確定驅動器類型

現在我的問題是我應該如何指示跨平臺方法的路徑類型?

+0

你是什麼意思的「指示」? – didierc 2013-04-09 09:14:29

+0

你爲什麼在意?如果在寫入操作期間刪除目標路徑,則在刷新緩衝區時將會看到某種錯誤。 – filmor 2013-04-09 09:17:05

+0

爲什麼不直接從臨時目錄複製副本? – stdcall 2013-04-09 10:14:03

回答

0

我認爲這將很難以可靠和便攜的方式實現。我確信所有的平臺都有一些方法來確定驅動器是否是本地驅動器,但是我會認爲一個更簡單可靠的解決方案是創建一個本地臨時文件,無論基本文件系統是什麼。

+0

我的服務負載非常高,始終在本地驅動器中創建文件,然後將它們移動到目標驅動器,爲大多數情況下不需要的服務創建額外的活動! – BigBoss 2013-04-09 09:25:42

0

如果您使用QtMobility,則可以使用QSystemStorageInfo類。

+0

我沒有使用'Qt',我正在使用'std :: iostream'和'boost :: filesystem' – BigBoss 2013-04-09 09:18:26

+0

在這種情況下,它會很困難。 AFAIK Boost.FileSystem無法勝任這項工作。您必須爲每個支持的平臺編寫自己的特定於平臺的代碼,或者採用更簡單的方法,在其中始終寫入臨時文件,然後將其移至原位。 – 2013-04-09 09:25:24