2017-03-22 52 views
-1

這是用C++/winRT編寫的,它最終將取代C++/CX。 以下3行代碼先於 OpenSequentialWriteAsync()的請求。但唉,沒有這樣的命令,只有 OpenSequentialReadAsync()在StorageFile上找不到OpenSequentialWriteAsync()方法

是否存在不允許創建順序文件的原因?

StorageFolder _storageFolder = ApplicationData::Current().LocalFolder();  

StorageFolder _turboCalc = co_await _storageFolder.CreateFolderAsync(L"TurboCalc", CreationCollisionOption::OpenIfExists); //create sub folder in folder 

StorageFile _storageFile = co_await _turboCalc.CreateFileAsync(L"FileDoubles.dbo", CreationCollisionOption::ReplaceExisting); //create file in sub folder 
+0

我投票結束這個問題作爲題外話,因爲要求基於對系統工作原理的誤解不會對任何人有所幫助。 (預讀緩存不是寫入文件的有意義的優化。) – IInspectable

回答

1

Windows有不同的caching strategies for files。截至該鏈接注意(這是CreateFile,這是比StorageFile一個較低的水平):

指定FILE_FLAG_SEQUENTIAL_SCAN標誌可以提高 性能讀取使用順序 訪問大型文件的應用程序。對於主要依次讀取大文件的應用程序 ,性能提升可能更加明顯,但偶爾會在小範圍的字節上跳過 。如果應用程序移動文件 隨機訪問指針,最佳緩存性能最有可能不會發生 。但是,正確的操作仍然有保證。

因此,如果您真的在按順序讀取文件,那麼使用OpenSequentialReadAsync方法可以提高性能。沒有用於書寫的等效優化,因此您可以使用OpenAsync