ฉันต้องการสร้างไฟล์ชั่วคราวที่ไม่ซ้ำกับนามสกุล. csv
สิ่งที่ฉันทำตอนนี้คือ
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
อย่างไรก็ตามสิ่งนี้ไม่รับประกันว่าไฟล์. csv ของฉันจะไม่ซ้ำกัน
ฉันรู้ว่าโอกาสที่ฉันจะได้รับการชนนั้นต่ำมาก (โดยเฉพาะถ้าคุณพิจารณาว่าฉันไม่ลบไฟล์. tmp) แต่รหัสนี้ดูไม่ดีสำหรับฉัน
แน่นอนว่าฉันสามารถสร้างชื่อไฟล์แบบสุ่มด้วยตนเองได้จนกว่าฉันจะพบชื่อที่ไม่ซ้ำกัน (ซึ่งไม่น่าจะมีปัญหา) แต่ฉันอยากรู้ว่าคนอื่น ๆ พบวิธีที่ดีในการจัดการกับปัญหานี้หรือไม่
GetTempFileName()
สร้างไฟล์ใหม่ทุกครั้งที่คุณเรียกมัน - หากคุณเปลี่ยนสตริงเป็นอย่างอื่นทันทีคุณเพิ่งสร้างไฟล์ศูนย์ไบต์ใหม่ในไดเรกทอรีชั่วคราวของคุณ (และอย่างที่คนอื่น ๆ จดไว้สิ่งนี้จะทำให้ล้มเหลวในที่สุดเมื่อคุณกดไฟล์ 65535 ใน ... ) - - เพื่อหลีกเลี่ยงปัญหานี้ตรวจสอบให้แน่ใจว่าได้ลบไฟล์ใด ๆ ที่คุณสร้างในโฟลเดอร์นั้น (รวมถึงไฟล์ที่ส่งคืนโดยGetTempFileName()
ควรอยู่ในบล็อกสุดท้าย)