2016-06-01 116 views
3

我想檢查文件夾名是否包含文件路徑。 例如檢查屬於文件夾名稱的文件路徑

string filePath = @"C:/vietnam/hello/world/welcome.jpg" 
IsFileBelongToFolderName(filePath, "hello");//should return true 
IsFileBelongToFolderName(filePath, "hell");//should return false 

在簡單的情況下,我只檢查文件路徑包含「/文件夾名/」,但我不知道它是任何情況下

確實有此檢查任何內置的功能是否正確?

UPDATE 在實際的例子中,我們創建應用程序來同步文件夾。某些子文件夾包含元文件,因此我們不想同步它。

改爲傳遞簡單文件夾名稱,我們要傳遞子文件夾鏈,例如:folderName = "hello/world"。我認爲它不那麼複雜,但與.gitignore文件的工作意義相同。 現在:

string filePath = @"C:/vietnam/hello/world/welcome.jpg" 
IsFileBelongToFolderName(filePath, "hello/world");//should return true 
IsFileBelongToFolderName(filePath, "hell/world");//should return false 
IsFileBelongToFolderName(filePath, "hell");//should return false 

回答

5

您可以通過使用DirectorySeparatorChar

var directoryPath = Path.GetDirectoryName(filepath); 

filePath = Path.GetFullPath(directorypath); // Get Canonical directory path (Credit to @Aron for pointing this.) 
bool exist = filePath.Split(Path.DirectorySeparatorChar) 
        .Any(x=>x.Equal("hello", StringComparison.InvariantCultureIgnoreCase)); 
+1

您應該首先對路徑進行規範化。例如'c:\ foo \ bar \ baz.txt'屬於'c:\ foo \ bar \ qux \ .. \'。 – Aron

+0

@Aron這是一個有效的點,現在更新它。謝謝。 –

+0

你應該首先排除文件名,如果folderName =「welcome.jpg」 – phuongnd

1
string filePath = @"C:/vietnam/hello/world/welcome.jpg"; 
      string[] folderNames = filePath.Split('/'); 
      if(folderNames.Contains("hello")) 
      { 
        //folder found 
      } 
2
public bool IsFileBelongToFolderName(string filePath, string folderName) 
{ 
    return filePath.Split('/').Contains(folderName);; 
} 

public bool IsFileBelongToFolderName(string filePath, string folderName) 
{ 
    return filePath.Split(Path.DirectorySeparatorChar).Any(x=>x.Equal(folderName, StringComparison.InvariantCultureIgnoreCase)); 
} 
1

試試這個

分裂 filepath做到這一點
public bool IsFileBelongToFolderName(string filePath, string name){ 
    return filePath.ToLower().Contains(@"/"+name.ToLower().Replace(@"/", "")[email protected]"/"); 
} 


string filePath = @"C:/vietnam/hello/world/welcome.jpg"; 

IsFileBelongToFolderName(filePath,"vietnam"); // return True 
IsFileBelongToFolderName(filePath,"Vietnam"); // return True 
IsFileBelongToFolderName(filePath,"Vietna"); // return false 
IsFileBelongToFolderName(filePath,"welcome.jpg"); // return false 
相關問題