[code snippet] 生成隨機大文件
一個無聊的測試代碼,因為要測試大文件的網絡傳輸,就寫了一個隨機大文件生成腳本,做個備份。
基本上都是 GPT 生成的,哈哈。
C# 代碼
namespace ConsolePlayground;internal class BigFileGenerater
{public async Task Run(){Console.WriteLine("大文件生成工具,輸入要生成的文件大小,單位 GB");Console.WriteLine();var input = Console.ReadLine();if (string.IsNullOrWhiteSpace(input)){return;}if (!double.TryParse(input.Trim(), out var size)){return;}if (size <= 0 || size > 1000){throw new ArgumentOutOfRangeException("size");}var byteSize = size * 1024 * 1024 * 1024;var folder = Environment.CurrentDirectory;Console.WriteLine($"將在當前目錄 {folder} 生成 {size} GB 的文件");Console.WriteLine("是否繼續? Y/N");input = Console.ReadLine();if (string.IsNullOrWhiteSpace(input)){return;}if (input.Trim().ToUpper() != "Y"){return;}Console.WriteLine("開始生成...");await Genetate(folder, byteSize);Console.WriteLine("結束生成");}private async Task Genetate(string folder, double size){var file = Path.Combine(folder, $"TEMP_{DateTime.Now:yyyyMMddHHmmss.fff}.tmp");using var fileStream = new FileStream(file, FileMode.OpenOrCreate);var rng = new Random();int step = 1024 * 1024;int count = (int)Math.Ceiling(size / step);for (int i = 0; i < count; i++){byte[] bytesToWrite = GenerateRandomBytes(rng, step);await fileStream.WriteAsync(bytesToWrite, 0, step);await fileStream.FlushAsync();}}public static byte[] GenerateRandomBytes(Random rng, int length){var randomBytes = new byte[length];rng.NextBytes(randomBytes);return randomBytes;}
}