ฉันจะลบไฟล์ใน C # ได้C:\test.txt
อย่างไรแม้ว่าจะใช้วิธีการชนิดเดียวกันเช่นในไฟล์แบทช์เช่น
if exist "C:\test.txt"
delete "C:\test.txt"
else
return nothing (ignore)
ฉันจะลบไฟล์ใน C # ได้C:\test.txt
อย่างไรแม้ว่าจะใช้วิธีการชนิดเดียวกันเช่นในไฟล์แบทช์เช่น
if exist "C:\test.txt"
delete "C:\test.txt"
else
return nothing (ignore)
คำตอบ:
สิ่งนี้ค่อนข้างตรงไปตรงมาโดยใช้คลาสFile
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
ตรวจสอบจริง ๆเนื่องจากFile.Delete
จะไม่ส่งข้อยกเว้นหากไฟล์ไม่มีอยู่แม้ว่าคุณจะใช้พา ธ สัมบูรณ์คุณจะต้องตรวจสอบเพื่อให้แน่ใจว่า พา ธ ไฟล์ทั้งหมดถูกต้อง
@
ก่อนหน้าเส้นทางของไฟล์ สำหรับฉันมันทำงานโดยไม่ต้อง
ใช้System.IO.File.Deleteเช่นนั้น:
System.IO.File.Delete(@"C:\test.txt")
จากเอกสาร:
หากไฟล์ที่จะลบไม่มีอยู่จะไม่มีข้อยกเว้นเกิดขึ้น
An exception is thrown if the specified file does not exist
กล่าวว่า
System.IO.File.Delete(@"C:\test.txt");
พอแล้ว ขอบคุณ
คุณสามารถนำเข้าSystem.IO
เนมสเปซได้โดยใช้:
using System.IO;
หาก filepath แสดงพา ธ แบบเต็มไปยังไฟล์คุณสามารถตรวจสอบการมีอยู่ของไฟล์และลบไฟล์ดังต่อไปนี้:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
if (System.IO.File.Exists(@"C:\test.txt"))
System.IO.File.Delete(@"C:\test.txt"));
แต่
System.IO.File.Delete(@"C:\test.txt");
จะทำเช่นเดียวกันกับโฟลเดอร์ที่มีอยู่
หากคุณต้องการหลีกเลี่ยงการDirectoryNotFoundException
คุณจะต้องให้แน่ใจว่าไดเรกทอรีของไฟล์ที่มีอยู่จริง File.Exists
สำเร็จสิ่งนี้ อีกวิธีหนึ่งก็คือการใช้ประโยชน์Path
และDirectory
คลาสยูทิลิตี้ดังนี้
string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
File.Delete(file);
}
if (System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
{
// Use a try block to catch IOExceptions, to
// handle the case of the file already being
// opened by another process.
try
{
System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
return;
}
}
if (File.Exists(path))
{
File.Delete(path);
}
หากคุณกำลังอ่านจากไฟล์นั้นโดยใช้ FileStream และต้องการลบให้แน่ใจว่าคุณปิด FileStream ก่อนที่คุณจะเรียกใช้ File.Delete (พา ธ ) ฉันมีปัญหานี้
var filestream = new System.IO.FileStream(@"C:\Test\PutInv.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
filestream.Close();
File.Delete(@"C:\Test\PutInv.txt");
using
คำสั่งที่File.Delete()
จะไปนอกวงเล็บ filestream.Dispose();
ในตัวอย่างที่คุณมีคุณควรทำ
บางครั้งคุณต้องการลบไฟล์ไม่ว่ากรณีใด (เกิดข้อยกเว้นโปรดลบไฟล์) สำหรับสถานการณ์ดังกล่าว
public static void DeleteFile(string path)
{
if (!File.Exists(path))
{
return;
}
bool isDeleted = false;
while (!isDeleted)
{
try
{
File.Delete(path);
isDeleted = true;
}
catch (Exception e)
{
}
Thread.Sleep(50);
}
}
หมายเหตุ: ข้อยกเว้นจะไม่ถูกโยนทิ้งหากไฟล์ที่ระบุไม่มีอยู่
นี่จะเป็นวิธีที่ง่ายที่สุด
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
จะช่วยให้ทำงานได้อย่างสมบูรณ์มิฉะนั้นจะส่งผลต่อขั้นตอนต่อไปหากเราทำสำเนาหรือเขียนไฟล์
อีกวิธีที่ฉันทำคือ
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}