Câu trả lời:
Điều này khá đơn giản khi sử dụng lớp File .
if(File.Exists(@"C:\test.txt"))
{
File.Delete(@"C:\test.txt");
}
File.Exists
kiểm tra vì File.Delete
không ném ngoại lệ nếu tệp không tồn tại, mặc dù nếu bạn đang sử dụng đường dẫn tuyệt đối, bạn sẽ cần kiểm tra để đảm bảo toàn bộ đường dẫn tập tin là hợp lệ.
@
đường dẫn trước tập tin? Đối với tôi nó hoạt động mà không có.
Sử dụng System.IO.File.Delete như vậy:
System.IO.File.Delete(@"C:\test.txt")
Từ tài liệu:
Nếu tập tin bị xóa không tồn tại, không có ngoại lệ được ném.
An exception is thrown if the specified file does not exist
.
System.IO.File.Delete(@"C:\test.txt");
là đủ. Cảm ơn
Bạn có thể nhập System.IO
không gian tên bằng cách sử dụng:
using System.IO;
Nếu filepath thể hiện đường dẫn đầy đủ đến tệp, bạn có thể kiểm tra sự tồn tại của nó và xóa nó như sau:
if(File.Exists(filepath))
{
try
{
File.Delete(filepath);
}
catch(Exception ex)
{
//Do something
}
}
Nếu bạn muốn tránh, DirectoryNotFoundException
bạn sẽ cần đảm bảo rằng thư mục của tập tin thực sự tồn tại. File.Exists
hoàn thành việc này Một cách khác là sử dụng các lớp tiện ích Path
và Directory
như vậy:
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);
}
Nếu bạn đang đọc từ tệp đó bằng FileStream và sau đó muốn xóa nó, hãy đảm bảo bạn đóng FileStream trước khi bạn gọi File.Delete (đường dẫn). Tôi đã có vấn đề này.
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
tuyên bố, nơi File.Delete()
sẽ đi ra ngoài dấu ngoặc. Trong ví dụ bạn có, bạn cũng nên làm a filestream.Dispose();
.
Đôi khi bạn muốn xóa một tập tin bất kể trường hợp nào (bất kỳ trường hợp ngoại lệ nào xảy ra, vui lòng xóa tập tin). Đối với những tình huống như vậy.
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);
}
}
Lưu ý: Một ngoại lệ không được ném nếu tệp được chỉ định không tồn tại.
Đây sẽ là cách đơn giản nhất,
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
System.Threading.Thread.Sleep(20);
}
Thread.sleep
sẽ giúp làm việc hoàn hảo, nếu không, nó sẽ ảnh hưởng đến bước tiếp theo nếu chúng ta sao chép hoặc ghi tệp.
Một cách khác tôi đã làm là,
if (System.IO.File.Exists(filePath))
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.IO.File.Delete(filePath);
}