ฉันกำลังมองหาวิธีที่ปลอดภัยในการสร้างไฟล์ชั่วคราวใน Java โดยปลอดภัยฉันหมายถึงสิ่งต่อไปนี้:
- ชื่อควรไม่ซ้ำกันแม้ภายใต้สภาวะการแข่งขันที่อาจเกิดขึ้น (เช่นเธรดอื่นเรียก func เดียวกันในเวลาเดียวกันหรือกระบวนการอื่นเรียกใช้รหัสนี้พร้อมกัน)
- ไฟล์ควรเป็นไฟล์ส่วนตัวแม้ว่าจะอยู่ภายใต้สภาวะการแข่งขันที่อาจเกิดขึ้น (เช่นผู้ใช้รายอื่นพยายามที่จะ chmod ไฟล์ด้วยอัตราที่สูง)
- ฉันสามารถบอกให้ลบไฟล์โดยที่ฉันไม่ต้องทำการลบทั่วไปและเสี่ยงต่อการลบไฟล์ที่ไม่ถูกต้อง
- ตามหลักการแล้วควรตรวจสอบให้แน่ใจว่าไฟล์ถูกลบแม้ว่าจะมีข้อยกเว้นเกิดขึ้นก่อนที่ฉันจะได้รับโอกาสก็ตาม
- ไฟล์ควรตั้งค่าเริ่มต้นเป็นตำแหน่งที่มีเหตุผล (เช่น JVM ที่ระบุ tmp dir โดยตั้งค่าเริ่มต้นเป็น dir temp ของระบบ)
File f = File.createTempFile(prefix, extension)
. มันจะถูกวางไว้ใน temp dir และด้วยf.deleteOnExit()
มันจะถูกลบโดยอัตโนมัติเมื่อออก