2015-07-10 65 views
-3

這些文件夾C#中存在不允許的文件

  • file1.exe
  • file2.dll

我想看看是此文件夾中存在多餘的文件。例如,如果我在此文件夾中創建examplefile.exe它必須給我一個錯誤,必須只有上面列出的那些文件。所以我創建了需要的文件字符串:

string[] only_these_files = { 
    "file1.exe", 
    "file2.dll" 
}; 

現在我需要搜索無關的文件,但如何?立即感謝。

我試過這段代碼,但我不知道如何檢查它。

string[] only_these_files = { 
      "image1.png", 
      "image2.png", 
      "image3.png", 
      "image4.png", 
      "image5.png" 
     }; 
     string[] fileEntries = Directory.GetFiles(@"C:\Users\Dewagg\Desktop\test\"); 

     List<String> badFiles = new List<string>(); 

     foreach (string fileName in fileEntries) 
      if (!only_these_files.Contains(fileName)) 
      { 
       badFiles.Add(fileName); 
      } 
+2

不要問社會編寫代碼爲您服務。尋求幫助來解決你自己的代碼。 – oppassum

+1

將問題分解成部分,然後回到這裏,用你不知道該怎麼做的特定部分:1)獲取文件夾中所有文件的列表2)查看文件列表中的任何文件是否不是允許的兩個文件3)向用戶報告錯誤消息。 –

+0

'我試過這段代碼,但是我不知道如何檢查它。':你是什麼意思? – sstan

回答

1

這不完全火箭科學:像這樣的你:

HashSet<string> allowedFiles = new HashSet<string>(StringComparer.OrdinalIgnoreCase) 
{ 
    "file1.exe" , 
    "file2.dll" , 
}; 
DirectoryInfo directory = new DirectoryInfo(@"c:\foo\bar") ; 

bool containsNonAllowedFiles = directory 
           .EnumerateFiles(@"C\foo\bar") 
           .Any(fi => !allowedFiles.Contains(fi.Name)) 
           ; 
bool containsAllAllowedFiles = allowedFiles 
           .All(fn => directory.EnumerateFiles(fn).Any()) 
           ; 
+0

謝謝,它爲我工作 – Dewagg

0

試試這個,因爲你只需要檢查兩個文件,它是一個不好的編碼約定使用ArrayList的你在做什麼,順便說一句

try{ 
    if (!File.Exists("TextFile1.txt")) 
    throw new FileNotFoundException(); 
} 
catch(FileNotFoundException e) 
{ 
    // your message here. 
} 
+0

根據我的理解,OP不只是想檢查文件是否存在,而是要確保該目錄中沒有任何其他文件。 – Speerian

+0

'System.IO.Directory myDir = GetMyDirectoryForTheExample(); int count = myDir.GetFiles()。Length;'然後他可以檢查計數是2 –

+0

我寧願看到一個列表然後直接比較一系列單個項目的任何一天...它可以被擴展。 –

4

如果你想檢查你的代碼,然後你總是可以在其中放置一個斷點並觀察執行情況。您需要在桌面上創建文件,以便了解預期結果。

如果你想驗證沒有任何錯誤的文件,那麼你可以檢查壞文件列表的大小。

所以,你想要的東西,如:

if(badFiles.Count>0)//based off your sample code with png's 
{ 
    //notify user 
    MessageBox.Show("Bad files were found"); //or create anonymous function to display bad files 
    // or Console.WriteLine("Bad files were found"); 
} 
+0

.....爲什麼'> 5'? – sstan

+0

@sstan好趕,沒有讀通過他的所有代碼 – Speerian

+0

非常感謝你;) – Dewagg