Testing Files Generator
ไทย

วิธีสร้างไฟล์ขนาดแม่นยำ

ทุกระบบมีคำสั่งสำหรับเรื่องนี้ และทั้งสามอยู่ด้านล่าง คำสั่งเหล่านี้ให้ไฟล์ที่มีจำนวนไบต์ถูกต้องพอดี - และสำหรับการทดสอบจำนวนมากนั่นคือทั้งหมดที่ต้องการ ทุกคำสั่งในหน้านี้ถูกรันก่อนเผยแพร่ บนระบบที่มันเป็นของ

คำตอบสั้นๆ

Windows: fsutil file createnew name 10485760 Linux: dd if=/dev/zero of=name bs=1M count=10 macOS: mkfile 10m name ขนาดเป็นไบต์ และ 10 MB ตามวิธีนับของตัวจัดการไฟล์คือ 10485760

Windows

fsutil และเวอร์ชัน PowerShell ที่ไม่ต้องใช้อะไรเพิ่ม

fsutil มาพร้อม Windows รับขนาดเป็นไบต์ จึงคำนวณตัวเลขก่อน - 10 MB คือ 10485760, 100 MB คือ 104857600, 1 GB คือ 1073741824

fsutil file createnew test10mb.bin 10485760

วัดบน Windows 11: ทำงานจากพรอมต์ธรรมดาโดยไม่ต้องใช้พรอมต์ที่ยกระดับสิทธิ์ และไฟล์ออกมาที่ 10485760 ไบต์พอดี

PowerShell ทำสิ่งเดียวกันได้โดยไม่ต้องเรียกโปรแกรมอื่น และเข้าใจหน่วย:

$file = New-Object System.IO.FileStream "test10mb.bin", Create, ReadWrite
$file.SetLength(10MB)
$file.Close()

10MB ใน PowerShell หมายถึง 10485760 ไบต์ ซึ่งเป็นการนับฐาน 1024 เดียวกับที่ Explorer ใช้ ดังนั้นสองคำสั่งข้างต้นให้ขนาดเดียวกัน

Linux

dd, truncate และ fallocate และความต่างที่ทำให้คนพลาด

dd คือคำสั่งที่ทุกคนรู้จัก มันเขียนไบต์จริงๆ:

dd if=/dev/zero of=test10mb.bin bs=1M count=10

truncate เสร็จทันที และนั่นคือกับดัก วัดบน Alpine Linux ไฟล์รายงาน 10485760 ไบต์และกินที่ ศูนย์บล็อก - เป็นไฟล์แบบกระจาย สิ่งที่อ่านไฟล์ได้ศูนย์สิบเมกะไบต์ แต่ดิสก์ไม่เคยสละพื้นที่:

truncate -s 10M test10mb.bin

ใช้ทดสอบขีดจำกัดการอัปโหลดได้ แต่ทำให้เข้าใจผิดเมื่อทดสอบโควตาดิสก์ fallocate คือสิ่งที่ควรใช้เมื่อพื้นที่ต้องเป็นของจริง:

fallocate -l 10M test10mb.bin

และเมื่อเนื้อหาต้องบีบอัดไม่ได้ เพื่อไม่ให้ตัวเก็บถาวรบีบกลับลงไปอีก:

head -c 10485760 /dev/urandom > test10mb.bin

macOS

mkfile ซึ่งไม่ใช่ไฟล์แบบกระจาย และอีกสองคำสั่งที่คุณรู้จักอยู่แล้ว

macOS มี mkfile มาให้ วัดบน macOS 26.6.2: 10485760 ไบต์ และ 20480 บล็อก ดังนั้นพื้นที่ถูกจัดสรรจริง ไม่ใช่แค่สัญญา:

mkfile 10m test10mb.bin

dd และ truncate ก็มีเช่นกันและทำงานเหมือนบน Linux:

dd if=/dev/zero of=test10mb.bin bs=1m count=10
truncate -s 10M test10mb.bin

ตรงที่วิธีนี้เลิกได้ผล

ไฟล์ขนาดถูกต้องไม่ใช่ไฟล์ชนิดที่ถูกต้อง

ทุกวิธีข้างต้นให้บล็อกของศูนย์ นั่นเพียงพอเมื่อสิ่งที่ทดสอบดูแค่ขนาด เช่น ขีดจำกัดอัปโหลด โควตา หรือการถ่ายโอน และเลิกเพียงพอทันทีที่มีอะไรเปิดไฟล์

วัดแล้ว และควรลองด้วยตัวเอง: สร้างไฟล์ 2 MB ด้วย fsutil ตั้งชื่อว่า photo.png แล้วส่งให้ไลบรารีรูปภาพ Pillow ตอบว่า cannot identify image file มันไม่ใช่ PNG และไม่เคยเป็น - มีแต่ชื่อที่บอกเช่นนั้น

เรื่องนี้สำคัญกว่าที่ฟังดู เพราะการทดสอบล้มเหลวไปทางไหนต่อจากนั้น เอนด์พอยต์อัปโหลดของคุณปฏิเสธไฟล์ การทดสอบเป็นสีเขียว และคุณสรุปว่าขีดจำกัดขนาดใช้ได้ แต่มันไม่ได้ปฏิเสธเพราะขนาด มันปฏิเสธเพราะไบต์ไม่ใช่รูปภาพ และกฎที่คุณตั้งใจทดสอบไม่เคยถูกแตะต้องเลย

อีกทางหนึ่ง

ไฟล์จริงของรูปแบบนั้น ขนาดตรงตามที่คุณขอพอดี

นี่คือสิ่งที่ Testing Files Generator ทำ ไฟล์เป็นของแท้ของรูปแบบนั้น - เปิดได้ในซอฟต์แวร์ของมัน - และมีจำนวนไบต์ตรงตามที่คุณขอ ถึงระดับไบต์:

tfg generate --format png --size 10mb --out ./fixtures

ขอขนาดที่รูปแบบไปไม่ถึง แล้วคุณจะได้ข้อผิดพลาดที่ระบุขีดล่างและเหตุผล ไม่ใช่ไฟล์ขนาดผิด หน้ารูปแบบไฟล์แสดงทุกรูปแบบพร้อมไฟล์เล็กที่สุดที่ทำได้

และขีดจำกัดหนึ่งค่าคือกรณีทดสอบสามกรณี ไม่ใช่หนึ่ง เครื่องมือจึงสร้างทั้งสาม:

tfg generate --format pdf --boundary 10mb --out ./edges

ได้ไฟล์ 10485759, 10485760 และ 10485761 ไบต์ พร้อมแมนิเฟสต์ที่บอกว่าระบบของคุณควรยอมรับไฟล์ไหนและปฏิเสธไฟล์ไหน หน้ากรณีการใช้งานอธิบายเรื่องนี้และงานอื่นอีกสี่อย่างที่เครื่องมือนี้สร้างมาเพื่อ

ฟรีและโอเพนซอร์ส GPL-3.0 ไม่ต้องสมัครสมาชิก ไฟล์ดาวน์โหลดของ Windows และ macOS ลงนามแล้วและเริ่มทำงานโดยไม่มีคำเตือน

แล้วควรใช้อะไร

ทั้งสองอยู่ในหน้านี้เพราะทั้งสองถูกต้องในบางครั้ง ข้อผิดพลาดที่ควรเลี่ยงคือการใช้อันแรกในที่ที่ต้องใช้อันที่สอง แล้วอ่านการทดสอบสีเขียวเป็นหลักฐาน