std::experimental::filesystem::resize_file
來自 cppreference.com
< cpp | experimental | fs
定義於標頭檔案 <experimental/filesystem> |
||
void resize_file( const path& p, std::uintmax_t new_size ); void resize_file( const path& p, std::uintmax_t new_size, error_code& ec ); |
(filesystem TS) | |
更改名為 p 的普通檔案的大小,如同使用 POSIX 的 truncate:如果檔案大小之前大於 new_size,則檔案剩餘部分被丟棄。如果檔案之前小於 new_size,則檔案大小增加,新區域顯示為零填充。
目錄 |
[編輯] 引數
p | - | 要調整大小的路徑 |
new_size | - | 檔案現在將具有的大小 |
ec | - | 非丟擲過載中用於錯誤報告的出參 |
[編輯] 返回值
(無)
[編輯] 異常
不接受 error_code& 引數的過載,在底層作業系統 API 錯誤時丟擲 filesystem_error,構造時以 p 作為第一個引數,作業系統錯誤碼作為錯誤碼引數。如果記憶體分配失敗,可能會丟擲 std::bad_alloc。接受 error_code& 引數的過載,如果作業系統 API 呼叫失敗,則將其設定為作業系統 API 錯誤碼;如果沒有錯誤發生,則執行 ec.clear()。此過載具有noexcept 規範:
noexcept
[編輯] 注意
在支援稀疏檔案的系統上,增加檔案大小不會增加它在檔案系統上佔用的空間:空間分配僅在寫入非零位元組到檔案時發生。
[編輯] 示例
演示建立稀疏檔案對可用空間的影響。
執行此程式碼
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::path p = fs::temp_directory_path() / "example.bin"; std::ofstream(p).put('a'); std::cout << "File size: " << fs::file_size(p) << '\n' << "Free space: " << fs::space(p).free << '\n'; fs::resize_file(p, 64*1024); // resize to 64 KB std::cout << "File size: " << fs::file_size(p) << '\n' << "Free space: " << fs::space(p).free << '\n'; fs::remove(p); }
可能的輸出
File size: 1 Free space: 31805444096 File size: 65536 Free space: 31805444096
[編輯] 參閱
返回檔案大小 (函式) | |
確定檔案系統上可用的空閒空間 (函式) |