2010-01-08 34 views
11

Tôi đang cố gắng xóa một tập tin, nhưng đoạn mã sau không làm điều đó. Nó không ném một ngoại lệ, nhưng tập tin vẫn còn đó. Điều đó có thể không?File.Delete Not Deleting File

try 
{ 
    File.Delete(@"C:\File.txt"); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 

Nếu không thể xóa tệp, ngoại lệ sẽ in ra nhưng không được. Nếu điều này không âm thầm (như trong phương pháp File.Delete là nuốt bất kỳ lỗi nào)?

+1

Bạn có chắc chắn rằng đường dẫn tệp chính xác không? Một ngoại lệ sẽ không được ném nếu tệp không tồn tại. –

+0

Điều gì khiến bạn nghĩ rằng tệp không bị xóa? –

+0

Tôi sẽ xác minh xem đây có phải là trường hợp không, nhưng đường dẫn trông hoàn toàn chính xác và tệp đã tồn tại. – kevindaub

Trả lời

16

File.Delete không   không ném ngoại lệ nếu tệp được chỉ định không tồn tại. [Một số phiên bản trước của tài liệu MSDN không chính xác tuyên bố rằng nó đã làm].

try 
{ 
    string filename = @"C:\File.txt"; 
    if (File.Exists(filename)) 
    { 
     File.Delete(filename); 
    } 
    else 
    { 
     Debug.WriteLine("File does not exist."); 
    } 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 
+4

@Mitch »Tôi không nghĩ điều đó đúng. Từ câu thứ hai của MSDN: "_An exception không được ném_ nếu tập tin được chỉ định không tồn tại." http://msdn.microsoft.com/en-us/library/system.io.file.delete.aspx –

+0

Thú vị, tôi sẽ phải thực hiện một File.Exists trước khi xóa để xác minh điều này. Cảm ơn. – kevindaub

+1

bạn là chính xác; 3.5 doco là chính xác. một số phiên bản trước đó thì không. –

2

Bạn có chắc chắn tên tệp là chính xác không? Thời gian duy nhất nó không ném một lỗi là nếu tập tin không tồn tại. Câu hỏi ngu ngốc, nhưng bạn có cơ hội nào có lỗi đánh máy trong tên tệp không? Hoặc một lỗi trong đường dẫn?

3

Kiểm tra xem đường dẫn của tệp có đúng không. Một ngoại lệ sẽ không được ném nếu tệp không tồn tại. Một sai lầm phổ biến là nhầm lẫn một tệp có tên File.txt với một tên là File.txt.txt nếu "Ẩn tiện ích mở rộng cho các loại tệp đã biết" được đặt trong Windows.