2015-11-25 3 views
0

Я пытаюсь прочитать внешний CSV-файл с файловыми файлами.Filehelpers, считывающие данные из внешнего источника

Вот мой код:

var engine = new FileHelperAsyncEngine<FileController>(); 

     using (engine.BeginReadFile("https://dl.dropboxusercontent.com/s/xxxyyyzzz/data.csv")) 
     { 
      foreach(FileController csvData in engine) 
      { 
       Console.WriteLine(csvData.batteryLevel); 
      } 
     } 

engine.BeginReadFile не работает с HTTP ссылки. Как я могу прочитать этот файл с Filehelpers?

+0

Скачать файл первым затем использовать FileHelper – KiwiPiet

ответ

3

Я не думаю, что FileHelpers работает над http. Но вы можете загрузить его первым:

var engine = new FileHelperAsyncEngine<FileController>(); 

    string fileName = DownloadFile("https://dl.dropboxusercontent.com/s/xxxyyyzzz/data.csv"); 
    using (engine.BeginReadFile(fileName)) 
    { 
     foreach(FileController csvData in engine) 
     { 
      Console.WriteLine(csvData.batteryLevel); 
     } 
    } 
    File.Delete(fileName); 


public static string DownloadFile(Uri url) 
{ 
    string fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("n") + ".csv"); 
    WebClient aWebClient = new WebClient(); 
    aWebClient.DownloadFile(url, fileName); 
    return fileName; 
} 
+0

Вы могли бы потенциально изменить источник использовать поток из запроса, но я думаю, что было бы лучше, чтобы держать их отдельно в соответствии с этим, например так что вы можете правильно обрабатывать любые связанные с Интернетом проблемы, включая повторную попытку, чтобы получить данные, а не синтаксический анализ напрямую. Плюс, если соединение нарушено, вы можете получить частичное чтение, которое может быть более вредным, чем хорошее, в зависимости от того, что вы делаете с данными. – netniV

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