2017-08-01 58 views
-4

我創建一個學校項目,老師說隱私的東西,我正在做一個加密工具,但總是在EncryptFile(文件,密碼)的代碼返回我這個錯誤不能轉換成「串」 C#

不能轉換System.Collections.Generic.List爲「串」

這是函數從具體列出目錄中的所有文件列出的字符串,而忽略例外

public List<string> GetFiles(string path, string pattern) 
{ 
    var files = new List<string>(); 
    try 
    { 
     files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly)); 
     foreach (var directory in Directory.GetDirectories(path)) 
      files.AddRange(GetFiles(directory, pattern)); 
    } 
    catch (Exception ex) 
    { 
     // unnautorized files 
    } 
    return files; 

    string password = ChooseUrPass.Text 
    EncryptFile(files, password); //here happen the error 
} 

如何繞過此錯誤?對不起,如果它是一個壞的問題,我是新手

如果那裏有需要的功能是那麼的文件加密

public void EncryptFile(string file, string password) 
{ 

    byte[] bytesToBeEncrypted = File.ReadAllBytes(file); 
    byte[] passwordBytes = Encoding.UTF8.GetBytes(password); 

    // Hash the password with SHA256 
    passwordBytes = SHA256.Create().ComputeHash(passwordBytes); 

    byte[] bytesEncrypted = AES_Encrypt(bytesToBeEncrypted, passwordBytes); 

    File.WriteAllBytes(file, bytesEncrypted); 
    System.IO.File.Move(file, file+".SafeFile"); 
}  

感謝您的時間

+1

我看到你的'GetFiles' –

+0

可達代碼你傳遞一個列表的東西,需要一個字符串......此外,像@AleksAndreev指出,該方法不會甚至可以被稱爲那裏。 –

+0

錯誤非常明顯。 'EncryptFile(字符串文件,字符串密碼)'期待一個包含文件名的字符串,並且你傳遞了'files',這是一個包含多個文件名的'List '。什麼部分不清楚? 'string'與'List '不一樣。 –

回答

0

看起來EncryptFile需要的第一個參數是一個字符串,你給它files,這是一個字符串列表。

我建議解決這樣說:

foreach(string s in files) 
{ 
    EncryptFile(s, password); 
} 
0

功能EncryptFile(string file, string password)是期待型string但你傳遞一個類型List<string>

的變量試試這個:

foreach(string file in files) { 
    EncryptFile(file, password); 
} 
0

你不需要List<string>和手工遞歸。試試這個代碼:

public List<string> GetFiles(string path, string pattern) 
{ 
    foreach (var file in Directory.GetFiles(path, pattern)) 
    { 
     EncryptFile(file, password); 
    } 
}