2017-10-19 79 views
0

我試着從文本文件中逐行讀取一個字符串,但是出現此錯誤,請參閱我的代碼。還有另外一種逐行讀取字符串的方法,或者針對這個錯誤的一種解決方案?該文件以UTF8格式保存。錯誤:路徑中的無效字符File.ReadLine

鏈接文件內容:https://shrib.com/#MHVN4JhCgKStecY7Q4ei

public Games RetornarGames(string arquivo) 
{ 
    try 
    { 
     Game game = new Game(); 
     Games games = new Games(); 

     foreach (string linha in File.ReadAllLines(arquivo, Encoding.UTF8)) 
     { 
      Match action = regexAction.Match(linha); 

      switch (action.Value) 
      { 
       case "InitGame": 
        game = InitGame(); 
        games.ListGames.Add(game); 
        break; 
       case "ClientConnect": 
        ClientConnect(game, linha); 
        break; 
       case "ClientUserinfoChanged": 
        ClientUserInfoChanged(game, linha); 
        break; 

       case "Kill": 
        Kill(game, linha); 
        break;  
       default: 
        break; 
      } 
     } 

     return games; 
    } 
    catch (Exception ex) 
    {  
     throw; 
    } 
} 
+2

是什麼'arquivo'的價值?錯誤說它有一個無效的路徑字符。 –

+0

哪一行代碼會引發異常?如果它是文件中的特定行,它是哪一行?該文件是否真正採用UTF8格式? _(FWIW,你可以刪除那個簡單地反映出來的'catch'塊 - 它對你沒有任何幫助。)_ –

+0

已更新,錯誤發生在第一行。 –

回答

0

我改變File.ReadLine爲StringReader和作品,謝謝!

StringReader sr = new StringReader(arquivo); 
       while (true) 
       { 
        string linha = sr.ReadLine(); 

        if (linha != null) 
        { 
         Match action = regexAction.Match(linha); 
         switch (action.Value) 
         { 

          case "InitGame": 
           game = InitGame(); 
           games.ListGames.Add(game); 
           break; 

          case "ClientConnect": 
           ClientConnect(game, linha); 
           break; 

          case "ClientUserinfoChanged": 
           ClientUserInfoChanged(game, linha); 
           break; 

          case "Kill": 
           Kill(game, linha); 
           break; 

          default: 
           break; 
         } 
        } 
        else 
        { 
         break; 
        } 
       } 

       return games; 
      } 
      catch (Exception ex) 
      { 

       throw; 
      } 
     }