我有我想要從一個文件夾移動到另一個文件名的excel列表。而且我不能將文件從一個文件夾複製到另一個文件夾,因爲有許多文件與Excel列表不匹配。我已經嘗試了幾件事情,但我仍然認爲,與數組這將是最簡單的方法來做到這一點(糾正我,如果我錯了)。根據searchPattern移動文件
,我面對現在的問題是,它無法找到任何文件(有此名稱下的文件的問題。
我有我想要從一個文件夾移動到另一個文件名的excel列表。而且我不能將文件從一個文件夾複製到另一個文件夾,因爲有許多文件與Excel列表不匹配。我已經嘗試了幾件事情,但我仍然認爲,與數組這將是最簡單的方法來做到這一點(糾正我,如果我錯了)。根據searchPattern移動文件
,我面對現在的問題是,它無法找到任何文件(有此名稱下的文件的問題。
您可以通過使用Directory.EnumerateFiles枚舉目錄中的文件,並使用LINQ表達式來檢查文件是否包含在你的字符串數組。
Directory.EnumerateFiles(pstFileFolder).Where (d => test.Contains(Path.GetFileName(d)));
所以你的foreach看起來像 這
foreach (var file in Directory.EnumerateFiles(pstFileFolder).Where (d => test.Contains(Path.GetFileName(d)))
{
// Exposes file information like Name
var theFileInfo = new FileInfo(file);
var destination = soruceFolder + theFileInfo.Name;
File.Move(file, destination);
}
謝謝分配完美:) –
其實也沒什麼,這不會搜索PST文件的目錄。或者使用自己構建的路徑Path.Combine,然後遍歷字符串數組,或者使用你的方法。用上面的代碼,你需要更新過濾器,因爲當給定一個字符串[]。ToString()時它不會找到任何文件。 :
Directory.GetFiles (pstFileFolder, "*.pst")
或者,你可以遍歷沒有過濾器的所有文件和文件名比較,以你的字符串數組爲此,。會是更好的方法。只需遍歷文件就可以了,然後通過List.Contains
檢查List是否包含文件。
foreach (var file in Directory.GetFiles (pstFileFolder))
{
// Exposes file information like Name
var theFileInfo = new FileInfo(file);
// Here, either iterate over the string array or use a List
if (!nameList.Contains (theFileInfo.Name)) continue;
var destination = soruceFolder + theFileInfo.Name;
File.Move(file, destination);
}
你顯然沒有得到我的問題,我不得不通過名稱區分不是類型 –
我已更新它 – NikxDa
我認爲你需要這個
var pstFileFolder = "C:/Users/chnikos/Desktop/Test/";
//var searchPattern = "HelloWorld.docx"+"Test.docx";
string[] test = { "HelloWorld.docx", "Test.docx" };
var soruceFolder = "C:/Users/chnikos/Desktop/CopyTest/";
// Searches the directory for *.pst
foreach (var file in test)
{
// Exposes file information like Name
var theFileInfo = new FileInfo(file);
var source = Path.Combine(soruceFolder, theFileInfo.Name);
var destination = Path.Combine(pstFileFolder, file);
if (File.Exists(source))
File.Move(file, destination);
}
所以,你正在尋找具有擴展名的文件'.docx'? searchPattern是不正確的,因爲這將是'System.String []' – Jehof
@Jehof那種,但我必須將它們與名稱區分開來,因爲這是我獨特的「鍵」 –