在 Windows 上,所謂空檔案是指邏輯位元組數正好為 0 的檔案——然而在測試、驗證與基準測試的工作流程中,通常需要的是一個位元組數精確為某個非零值的檔案,而不是零位元組的佔位檔。Dummy File Generator 可在你目前的瀏覽器分頁中產生一個本機的虛擬檔案,並指定嚴格的檔名、精確的整數位元組數(範圍從 1 到 52,428,800,亦即 50 MiB),以及選擇性的內容模式:零位元組、安全隨機位元組,或重複的 UTF-8 文字。每一個位元組都是透過標準瀏覽器 API 建構而成——Blob、URL.createObjectURL、Crypto.getRandomValues 以及 TextEncoder——不會上傳到 Lizely,也不會傳送至任何其他服務。這使得本工具在 Windows 上特別實用,例如你想跳過 fsutil、PowerShell 或系統管理員提示,或是你需要的檔案大小是精確的位元組數,而非 4 KiB NTFS 配置單位(allocation unit)的倍數時。建構、位元組驗證與下載皆在目前分頁中完成,因此該檔案會以你指定的名稱與大小落入你的下載資料夾。

為什麼 Windows 開發者需要一個精確大小的測試檔
Windows 提供數種內建方式來建立檔案:在檔案總管中按右鍵並選擇「新增 → 文字文件」、在 CMD 中執行 type nul > file.txt,或在 PowerShell 中呼叫 New-Item。這些做法在單純建立零位元組檔案時都能正常運作,但當任務變成「建立一個位元組大小精確的檔案」時就顯得笨拙——例如 1,234,567 位元組以重現上傳上限的邊界情況,或一個 25 MiB 的檔案以測試在四分之一點附近出現異常的進度條。Windows 的 fsutil file createnew 指令能在精確的位元組數下產生一個稀疏(sparse)的零填檔案,但它需要系統管理員層級的命令提示字元,以及磁碟上已存在的路徑。
基於瀏覽器的產生器則繞過了這項限制。Dummy File Generator 完全在你的瀏覽器分頁中執行,因此沒有安裝程式、不修改 PATH,也不會跳出 UAC 提示。你只需提供名稱、整數位元組大小以及內容原則,頁面就會建構一個具有精確邏輯位元組數的 Blob、驗證 Blob.size 是否符合你的要求,並發佈一個下載連結。你取得的會是一般檔案,其位元組長度與你輸入的內容相符;之後發生的情況——壓縮、NTFS 配置區塊、重複資料刪除——則不在產生器的掌控與責任範圍內。
如何使用瀏覽器在 Windows 建立空檔案
當你需要在 Windows 上取得一個精確位元組數的檔案,卻不想開啟具有較高權限的終端機或安裝命令列工具時,可使用以下程序。
- 在目前的瀏覽器分頁中開啟 Dummy File Generator。
- 在名稱欄位中輸入一個安全的檔名。名稱不可為空、不可含有路徑分隔符號與控制字元,也不能是 Windows 保留的裝置名稱,例如 CON、NUL、COM1 或 LPT1。
- 輸入精確的整數位元組大小,只能使用數字——不可帶正負號、小數點、單位後綴,也不可有前後空白。可接受範圍為 1 到 52,428,800 位元組。
- 選擇內容模式:全部為 0x00 的零位元組、用於不可壓縮測試資料的安全隨機位元組,或可由你掌控的決定性重複 UTF-8 文字。
- 若選擇重複 UTF-8 文字,請輸入長度至少為 1 個字元、且不超過 10,000 個 UTF-16 字碼單位的模式。可接受合法的表情符號與輔助平面字元。
- 點擊 generate。頁面會建構 Blob、驗證 Blob.size 是否精確等於所要求的位元組數,並顯示帶有位元組原則與內容原則摘要的下載連結。
- 點擊下載連結。檔案會以你輸入的精確名稱,儲存到你瀏覽器的 Downloads 資料夾,並具有你所要求的精確邏輯位元組數。
整個工作流程都在目前分頁中完成,因此關閉或重新載入頁面會撤銷記憶體中的 ObjectURL。若你編輯名稱、大小或文字,先前的 URL 會被撤銷,先前的成功狀態也會在新任務開始前被清除。若要比較其他作業系統的做法,請參閱 how to create an empty file in any browser with exact size。
三種內容模式及其適用時機
本產生器提供三種內容原則。每種都會產生你所輸入的精確位元組數,但當下游工具進行壓縮、雜湊或封存時,這些位元組的表現行為差異極大。請選擇與你想測試的屬性相符的模式。
| 模式 | 寫入內容 | 可壓縮性 | 最適合的 Windows 使用情境 |
|---|---|---|---|
| Zero bytes | 每一個位元組皆為 0x00,以有界 Uint8Array 區段寫入。 | 幾乎可壓縮至零。 | 重現稀疏檔案情境、測試 NTFS 壓縮,或檢查傳輸管線回報的是邏輯位元組數而非壓縮後大小。 |
| Secure random bytes | 透過瀏覽器的 Web Crypto getRandomValues API 進行填充,每次呼叫最多 65,536 位元組(即官方記載的單次呼叫上限)。 | 實際上不可壓縮。 | 校驗和管線、雜湊碰撞測試、傳輸時間基準測試,以及任何需要壓縮後大小等於邏輯大小的情境。 |
| Repeated UTF-8 text | 將你的文字模式以 UTF-8 編碼並重複填滿所要求的長度;任何無法容納完整碼位(code point)的剩餘位元組,會以 ASCII 空格填補。 | 壓縮效果良好,但檔案仍維持有效的 UTF-8。 | 重現已知的文字酬載、為剖析器測試產生樣板資料,以及驗證下游工具將檔案讀為 UTF-8 而非亂碼。 |
50 MiB 的臨界值正好等於 52,428,800 位元組,這是因為本產生器以二的冪次而非十的冪次來計算位元組。逐步乘算單位:50 × 1024 = 51,200 KiB,而 51,200 × 1024 = 52,428,800 位元組。此數值可被接受;下一個位元組 52,428,801 則會被拒絕並回傳錯誤。可見的摘要回報的是邏輯位元組數,而非檔案系統的配置區塊,因此一個 50 MiB 的全零檔案,在經過 NTFS 壓縮或傳輸工具處理後,實際佔用的實體空間可能遠少於此。
Windows 上的檔名安全性:哪些會被拒絕
本產生器會驗證名稱,而非靜默地將其清理。頁面接受的名稱會原封不動地作為瀏覽器下載屬性使用,因此你所見即 Windows 所見。建立驗證規則的原因在於 Windows 與 NTFS 將多種形式視為路徑、裝置或隱藏格式,而非普通檔名:
- 空名稱、前後含有空白,以及結尾為點號的名稱會被拒絕。
- 正斜線、反斜線,以及常見檔案系統保留的 Unicode 範圍中與斜線相似的字元會被拒絕,避免名稱意外變成目錄遍歷(directory traversal)。
- C0 與 C1 控制字元、零寬度與雙向格式控制字元,以及 Unicode 行分隔符會被拒絕,藉此防止從右到左覆寫等欺騙手法進入最終檔名。
- Windows 裝置名稱——CON、NUL、PRN、AUX、COM1 至 COM9,以及 LPT1 至 LPT9——會被拒絕,因此本產生器不會悄悄產出與保留裝置控制代碼衝突的檔案。
- 常見檔案系統保留的標點符號,包括常用於殼層重新導向或備用資料流(alternate data streams)的字元,會被拒絕。
被接受的名稱會逐字作為下載屬性使用。該屬性只是對瀏覽器的一個提示:若 Downloads 資料夾中已存在同名檔案,或 Windows 的政策拒絕該名稱,作業系統可能會在儲存時重新命名該檔案。這種重新命名屬於外部行為;檔案內部的位元組並不會改變。
Windows 上虛擬測試檔的常見使用情境
在 Windows 端的開發與維運作業中,精確大小的虛擬檔案會反覆出現。以下是幾個真實的應用場景:
- 上傳上限驗證。逐步測試 1 MiB、10 MiB 及文件記載的最大值等大小,確認伺服器會拒絕超過上限的附件,並接受低於上限的附件。
- 儲存配額測試。在不刻意尋找剛好相符的真實文件的情況下,重現 Windows 服務或共用資料夾拒絕新寫入作業的精確位元組門檻。
- 進度指示器與傳輸基準測試。使用安全隨機位元組(壓縮效果差)來測量真實的傳輸時間與進度條更新,避免壓縮串流讓上傳速度看起來比實際快。
- 校驗和管線。將已知的隨機虛擬檔通過 SHA-256 或其他雜湊函式,確認當位元組未變時校驗和管線會回報穩定的值,而當位元組不同時則回報不同的值。
- 應用程式錯誤訊息。提供一個使用常見副檔名、但內容為零、隨機位元組或重複文字的檔案,迫使剖析器顯示「檔案過大」或「不支援的類型」錯誤。
無論你選擇哪種模式,皆有兩項務實的注意事項。首先,在你正在建構並以 ObjectURL 保存 50 MiB 虛擬檔時,它仍會佔用該分頁中的真實記憶體,因此應避免同時在多個分頁中產生大量大型檔案。其次,請勿使用產生的檔案來規避服務限制、耗盡他人的儲存空間,或探測你未擁有或未獲授權測試的系統——本工具是用於在你自己的開發環境中重現檔案大小條件,而非用於對第三方進行壓力測試。
本工具不會產生的內容
本產生器會建立原始的測試位元組;它並不會僅因檔名以特定副檔名結尾,就產生出有效的 PNG、PDF、ZIP、MP4、可執行檔,或任何其他語意上有效的格式。一個名為 report.pdf 但由零位元組構成的檔案無法以 PDF 開啟;一個由零位元組構成的可執行檔也無法執行。若你需要結構化的測試固定資料,請使用能建構真實格式位元組的工具——例如 JSON Formatter 用於 JSON 結構的酬載、UUID Generator 用於識別符固定資料,或 ASCII Table 參考表用於純 7 位元文字。
本工具也不會保留隨機模式的種子,因此無法在稍後重現完全相同的隨機檔案。它並非密碼產生器、加密系統、安全抹除工具、金鑰衍生函式,也無法作為下載位元組在分享後仍維持機密的證明。請將隨機虛擬檔僅視為測試資料。