2016-10-13 3 views
-3
class Program 
{ 
    public static string GetChecksum(string m_fileinput) 
    { 


     string m_checksum; 
     using (FileStream stream = File.OpenRead(m_fileinput)) 
     { 
      SHA256Managed sha = new SHA256Managed(); 
      byte[] checksum = sha.ComputeHash(stream); 
      m_checksum = 
       BitConverter.ToString(checksum).Replace("-", String.Empty); 
     } 

     return m_checksum; 
    } 

    static void Main(string[] args) 
    { 
     string fileContent = File.ReadAllText("C://Users//wiproat3//Desktop//checksum.txt"); 
     string checksum = GetChecksum(fileContent); 
     Console.WriteLine(checksum); 
     Console.ReadLine(); 
    } 
} 

Я пытаюсь создать контрольную сумму для файла .WHILE отладочного содержимого файла должны быть красным, но я получаю эту ошибку «Первый шанс исключение типа «System.ArgumentException» произошел в mscorlib.dll в строке «filestream».Первого шанс исключение типа «System.ArgumentException» произошло в mscorlib.dll

+5

Прочитать сообщение об исключении. Вы передаете содержимое файла методу, ожидающему имя файла. Вероятно, ваш фактический вопрос: «Как создать поток из строки» _, который полностью документирован. – CodeCaster

+0

@CodeCaster имеет небольшую вероятность, что 'checksum.txt' содержит единственную строку, которая содержит путь и имя файла .... – rene

+0

@rene да, теоретически, но тогда не будет исключено исключение ArgumentException. – CodeCaster

ответ

0

Вам просто нужно исправить свой вызов функции GetChecksum.

Прямо сейчас вы передаете полное содержимое контрольной суммы.txt в виде строки в параметр m_fileinput GetChecksum. Но File.OpenRead ожидает путь к файлу, а не содержимое файла.

Все, что вам нужно сделать, это обновление вашей основной функции, поэтому оно выглядит как код ниже.

static void Main(string[] args) 
{ 
    string checksum = GetChecksum("C://Users//wiproat3//Desktop//checksum.txt"); 
    Console.WriteLine(checksum); 
    Console.ReadLine(); 
} 
+0

получил. он работает сейчас. Thnks :) – nive

Смежные вопросы