
什麼是虛擬檔案以及為什麼需要它
虛擬檔案是您建立的精確大小佔位檔,用來測試上傳腳本、儲存配額或網路傳輸,而無需暴露真實資料。在 Windows 命令提示字元 (CMD) 中,內建的 fsutil 命令可以建立任何整數位元組大小的零填充檔案,但它只能產生空位元組——不會產生隨機資料或重複的文字樣式。如需更多控制,基於瀏覽器的虛擬檔案產生器可讓您指定精確的位元組數 (從 1 到 52,428,800) 並選擇零位元組、加密安全隨機位元組或重複的 UTF-8 文字。這兩種方法都在本機執行,因此不會有任何檔案離開您的電腦。
無論您是要驗證拒絕超過 10 MB 檔案的上傳表單、測試以 250 MB 分割封存檔案的備份腳本,還是要用 1 GB 的承載量模擬慢速網路傳輸,虛擬檔案都能為您提供可預測且可重複的測試案例。由於檔案大小是精確的,您可以驗證您的系統是否正確處理邊界條件——當真實資料遇到相同限制時不會出現意外。
在接下來的章節中,我們將介紹用於零填充檔案的原生 CMD 方法,然後逐步說明虛擬檔案產生器,用於處理安全隨機資料或重複文字樣式等更進階的用途。
在 CMD 中建立零填充的虛擬檔案
Windows CMD 包含 fsutil 命令,可以建立任何整數位元組大小 (最高 2 GB) 的零填充檔案。這是不離開命令列就能快速產生虛擬檔案的方法。
- 開啟命令提示字元:按下
Win + R,輸入cmd,然後按下 Enter。 - 執行 fsutil 命令:
將fsutil file createnew "C:\path\to\dummy.txt" 10485760C:\path\to\dummy.txt替換為您想要的檔案路徑,並將10485760替換為精確的位元組大小 (10,485,760 位元組 = 10 MB)。 - 驗證檔案大小:在檔案上按右鍵,選擇「內容」,並確認大小符合您指定的位元組數。
此方法適用於只需要特定大小檔案而不在意內容的快速測試。然而,fsutil 無法建立隨機資料或重複文字樣式——它只能用空位元組 (0x00) 填充檔案。針對這些用途,您需要使用虛擬檔案產生器工具。
使用虛擬檔案產生器產生具有自訂內容的虛擬檔案
虛擬檔案產生器可讓您建立精確位元組大小的檔案,並在三種內容類型之間選擇:零位元組、安全隨機位元組或重複的 UTF-8 文字。以下是使用方法:
- 在瀏覽器中開啟虛擬檔案產生器。
- 輸入安全的檔案名稱 (例如
test-50mb.bin) 和精確的位元組大小 (例如 50 MB 為52428800)。該工具接受從 1 到 52,428,800 位元組的大小。 - 選擇內容類型:
- 零位元組:用空位元組 (0x00) 填充檔案,與 CMD 的
fsutil輸出相同。 - 安全隨機位元組:使用 Web Crypto API 產生加密安全隨機資料,非常適合測試加密或雜湊腳本。
- 重複文字:可讓您指定一個 UTF-8 文字樣式 (例如
Lorem ipsum),該樣式會重複直到檔案達到精確的位元組大小。
- 零位元組:用空位元組 (0x00) 填充檔案,與 CMD 的
- 按下產生。該工具會在您的瀏覽器中本機建立一個 Blob,並顯示摘要,顯示精確的位元組數和內容類型。
- 檢視摘要,然後按下下載將檔案儲存到您的裝置。
由於該工具完全在您的瀏覽器中執行,不會上傳或儲存任何資料到伺服器。這使得它適用於敏感的測試場景,例如模擬加密承載量或驗證您的系統如何處理非 ASCII 文字。
何時使用各種方法
下表比較了 CMD 方法和虛擬檔案產生器在常見用途中的差異:
| 用途 | CMD (fsutil) |
虛擬檔案產生器 |
|---|---|---|
| 快速零填充檔案 | ✅ 最佳選擇 (一個命令) | ✅ 可行,但大型檔案較慢 |
| 用於加密測試的隨機資料 | ❌ 不可能 | ✅ 透過 Web Crypto 產生安全隨機位元組 |
| 重複文字樣式 (例如記錄檔) | ❌ 不可能 | ✅ UTF-8 文字重複至精確大小 |
| 超過 2 GB 的檔案 | ❌ 限制為 2 GB | ❌ 限制為 50 MB (52,428,800 位元組) |
| 本機產生 (無上傳) | ✅ 在您的電腦上執行 | ✅ 在您的瀏覽器中執行 |
對大多數使用者而言,虛擬檔案產生器是更靈活的選擇。它能處理隨機資料和文字樣式,這對於測試您的系統如何處理非零內容至關重要。然而,如果您只需要零填充檔案並偏好命令列,fsutil 是更快速的選擇。
虛擬檔案用途的實際範例
以下是三個真實世界的情境,虛擬檔案可幫助您在冒險使用真實資料的情況下進行測試和除錯:
1. 測試上傳限制
許多網頁表單會強制設定最大檔案大小 (例如 10 MB)。若要驗證此限制,請使用虛擬檔案產生器建立一個精確 10,485,760 位元組 (10 MB) 的虛擬檔案。將其上傳到表單並確認系統接受。然後,建立一個 10,485,761 位元組 (10 MB + 1 位元組) 的檔案,並驗證表單以正確的錯誤訊息拒絕它。
2. 模擬網路傳輸
如果您正在測試一個將大檔案分割成區塊進行傳輸的腳本,請使用隨機資料產生一個 100 MB 的虛擬檔案。使用該腳本將其分割成 10 MB 的區塊、傳輸它們並重新組裝。使用差異比對工具比較原始檔案和重新組裝的檔案,以確保沒有資料遺失或損毀。
3. 驗證儲存配額
雲端儲存服務通常會強制設定配額 (例如每位使用者 5 GB)。若要測試您的應用程式如何處理配額限制,請使用 CMD 的 fsutil 建立一個 5,242,880,000 位元組 (5 GB) 的虛擬檔案 (如果該工具有 50 MB 限制,也可以使用多個較小的檔案)。將其上傳到該服務,並驗證您的應用程式是否能妥善處理「配額超過」錯誤。
疑難排解常見問題
以下是您在建立虛擬檔案時可能遇到的問題及解決方法:
檔案大小與指定的位元組不符
如果檔案大小與您輸入的位元組數不符,請檢查以下常見原因:
- CMD (
fsutil):確保您使用的是正確的位元組數 (例如 1 MB = 1,048,576 位元組,而不是 1,000,000)。Windows 使用二進位前置詞 (KiB、MiB),而不是十進位。 - 虛擬檔案產生器:該工具會強制執行您輸入的精確位元組大小,但由於檔案系統的額外負擔,某些作業系統可能會回報略有不同的大小。例如,1 位元組的檔案可能會因區塊配置而在磁碟上顯示為 4 KB。
隨機資料安全性不足
虛擬檔案產生器使用 Web Crypto API 來產生安全隨機位元組,適用於大多數測試情境。然而,如果您需要用於正式環境的加密安全隨機資料,請考慮在受信任的環境中產生 (例如使用 OpenSSL),然後再將其傳輸到您的測試系統。
重複文字未精確填滿檔案
使用「重複文字」選項時,該工具會透過在必要時截斷最後一個重複,確保檔案達到精確的位元組大小。例如,如果您輸入一個 10 位元組的文字樣式和 25 位元組的檔案大小,該工具會將該樣式重複兩次 (20 位元組) 並截斷最後 5 位元組以達到 25 位元組。這可確保檔案大小始終精確,即使文字樣式無法整除。
CMD 和虛擬檔案產生器的替代方案
雖然 CMD 和虛擬檔案產生器是 Windows 使用者最直接的選擇,但以下是其他平台或進階用途的幾種替代方案:
PowerShell
PowerShell 可以使用 System.IO.FileStream 類別建立虛擬檔案。例如,若要建立具有隨機資料的 50 MB 檔案:
$f = New-Object System.IO.FileStream "C:\temp\test.dat" -ArgumentList Create, ReadWrite
$f.SetLength(52428800)
$f.Close()
如果您需要在 Windows 環境中編寫檔案建立腳本,此方法非常有用。然而,與 fsutil 一樣,它只能建立零填充檔案,除非您新增額外的邏輯來寫入隨機資料。
Linux 和 macOS
在 Linux 或 macOS 上,您可以使用 dd 命令來建立零填充檔案:
dd if=/dev/zero of=dummy.txt bs=1 count=10485760
若要使用隨機資料,請改用 /dev/urandom:
dd if=/dev/urandom of=dummy.txt bs=1 count=10485760
這些命令功能強大,但需要熟悉終端機語法。對於偏好圖形化介面的使用者,虛擬檔案產生器提供了更友善的替代方案。
程式語言
如果您正在編寫腳本或應用程式,大多數程式語言都包含用於檔案建立的程式庫。例如,在 Python 中:
with open("dummy.txt", "wb") as f:
f.write(b"\0" * 10485760) # 零填充
# 或
f.write(os.urandom(10485760)) # 隨機資料
此方法非常適合自動化測試,但需要編寫和維護程式碼。對於一次性任務,虛擬檔案產生器是一種無需編寫程式碼的替代方案。
相關指南:如何檢查您的 JSON 格式是否正確。
如果您在權衡各種選項,如何在 CSS 中建立 Flexbox:實務逐步指南詳細介紹了相關內容。