2013-02-13 120 views
7

鑑於可能的完整文件路徑,我將以爲例C:\ dir \ otherDir \ possiblefile我想知道尋找一個好方法出是否檢查文件或父目錄是否存在給定可能的完整文件路徑

C:\目錄\ otherDir \ possiblefile文件

C:\目錄\ otherDir目錄

存在。我不想創建文件夾,但我想創建文件,如果它不存在。 該文件可能有擴展名或不可用。 我要完成這樣的事情:

enter image description here

我想出了一個解決方案,但它是一個有點矯枉過正,在我看來。應該有一個簡單的方法來做到這一點。

這裏是我的代碼:

// Let's example with C:\dir\otherDir\possiblefile 
private bool CheckFile(string filename) 
{ 
    // 1) check if file exists 
    if (File.Exists(filename)) 
    { 
     // C:\dir\otherDir\possiblefile -> ok 
     return true; 
    } 

    // 2) since the file may not have an extension, check for a directory 
    if (Directory.Exists(filename)) 
    { 
     // possiblefile is a directory, not a file! 
     //throw new Exception("A file was expected but a directory was found"); 
     return false; 
    } 

    // 3) Go "up" in file tree 
    // C:\dir\otherDir 
    int separatorIndex = filename.LastIndexOf(Path.DirectorySeparatorChar); 
    filename = filename.Substring(0, separatorIndex); 

    // 4) Check if parent directory exists 
    if (Directory.Exists(filename)) 
    { 
     // C:\dir\otherDir\ exists -> ok 
     return true; 
    } 

    // C:\dir\otherDir not found 
    //throw new Exception("Neither file not directory were found"); 
    return false; 
} 

有什麼建議?

回答

11

你的步驟3和4可以被代替:

if (Directory.Exists(Path.GetDirectoryName(filename))) 
{ 
    return true; 
} 

即不僅短,但將返回正確的值用於包含Path.AltDirectorySeparatorCharC:/dir/otherDir路徑。

+0

是的,除此之外,它是相當不錯的去。 – 2013-02-13 18:12:04

+0

現在,這絕對是更短,從手動分析和處理替代分隔符。正是我一直在尋找的! – Joel 2013-02-14 11:06:52

相關問題