我會得到一個文件夾內的所有文件夾,如下所示:最簡單的方式,如果文件中的子文件夾中存在
foreach (DirectoryInfo directory in root.GetDirectories())
我現在要檢查所有文件中的每個那些文件夾individualally的一個XML如果XML文件存在,我想做點什麼。
什麼是最好的方式去做這件事?
我知道這是基礎:
if (File.Exists("*.xml"))
{
}
,但不工作?
我會得到一個文件夾內的所有文件夾,如下所示:最簡單的方式,如果文件中的子文件夾中存在
foreach (DirectoryInfo directory in root.GetDirectories())
我現在要檢查所有文件中的每個那些文件夾individualally的一個XML如果XML文件存在,我想做點什麼。
什麼是最好的方式去做這件事?
我知道這是基礎:
if (File.Exists("*.xml"))
{
}
,但不工作?
如果要真正地嘗試此方法用XML文件做一些事情。如果你只是檢查,看看是否有任何XML文件存在,那麼我會去不同的路線:
foreach (DirectoryInfo directory in root.GetDirectories())
{
foreach(string file in Directory.GetFiles(directory.FullName, "*.xml"))
{
//if you get in here then do something with the file
//an "if" statement is not necessary.
}
}
if (Directory.GetFiles(@"C:\","*.xml").Length > 0) {
// Do something
}
正如你可以使用Directory.GetFiles
與在找到的文件搜索模式和行動的替代...
var existing = Directory.GetFiles(root, "*.xml", SearchOption.AllDirectories);
//...
foreach(string found in existing) {
//TODO: Action upon the file etc..
}
foreach (DirectoryInfo directory in root.GetDirectories())
{
// What you have here would call a static method on the File class that has no knowledge
// at all of your directory object, if you want to use this then give it a fully qualified path
// and ignore the directory calls altogether
//if (File.Exists("*.xml"))
FileInfo[] xmlFiles = directory.GetFiles("*.xml");
foreach (var file in xmlFiles)
{
// do whatever
}
}
不工作怎麼樣? –
它不起作用,因爲該文件夾包含一個xml文件,但它在跳過if語句時跳過了它。 – mameesh
我已經在下面寫了一個更詳細的回覆,但是如果你想要「教一個人釣魚」的答案......考慮一下你正在迭代的DirectoryInfos並沒有把你正在迭代的靜態調用File類(即每次通過該循環時File都做同樣的事情,它不關心你在切換DirectoryInfos) – heisenberg