Как преобразовать строковый массив в объект
У меня есть утилита, которая считывает статистику диска с удаленного сервера. Я получаю выходные данные в виде массива строк и записываю их в текстовый файл (прилагается. У меня возникли проблемы с приведением этого массива строк в список<t>.
Я могу записать возвращенные строки/данные в текстовый файл следующим образом :
try { string realPath = @"C:\Users\mycomputer\Documents\FILES"; string appLog = "PuttyOutput"; var logPath = realPath + Convert.ToString(appLog) + DateTime.Today.ToString("dd -MM-yy") + ".docx"; if (!File.Exists(logPath)) { File.Create(logPath).Dispose(); } using (SshClient ssh = new SshClient("+serverIp +", "+username+", "+password+")) { ssh.Connect(); var result = ssh.RunCommand("df -k"); var rss = result.Result; string[] lines = rss.Split('\n'); foreach (string line in lines) { using (StreamWriter sw = File.AppendText(logPath)) { sw.WriteLine(line); sw.Flush(); sw.Close(); } ssh.Disconnect(); } } catch (Exception e) { e.ToString(); }
В идеале я хочу, чтобы все данные в строке были сохранены в соответствующие столбцы. Я не уверен, как я могу это сделать, потому что я думаю, что я должен сначала разделить строки в каждой строке . На данный момент выходные данные записываются в текстовый файл, как показано ниже :
Filesystem 1024-blocks Used Available Capacity Mounted on rpool/ROOT/solaris-0 47185886 39055271 6723316 86% / rpool/ROOT/solaris-0/var 47185886 334036 6723316 5% /var /dev 0 0 0 0% /dev /u01 104857600 92783432 12074167 89% /u01 proc 0 0 0 0% /proc ctfs 0 0 0 0% /system/contract
так что я хочу , чтобы все данные в используемом столбце были сохранены в соответствующем используемом столбце в таблице базы данных, 1024-blocks to Blocks column и так далее ...
Что я уже пробовал:
Я попытался бросить, как показано ниже, но я получаю ошибку Входная строка была не в правильном формате.
Модель для приведения к (Server.cs)
class Server { public String Filesystem { get; set; } public double Blocks { get; set; } public double Used { get; set; } public double Available { get; set; } public int Capacity { get; set; } public string Mount { get; set; } }
и вот как я пытаюсь бросить :
<pre> ssh.Connect(); var result = ssh.RunCommand("df -k"); var rss = result.Result; string[] lines = rss.Split('\n'); var servers = new List<Server>(); foreach (var line in lines) { servers.Add(new Server { Filesystem = line[0].ToString(), Blocks = double.Parse(line[1].ToString()), Used = double.Parse(line[2].ToString()), Available = double.Parse(line[3].ToString()), Capacity=int.Parse(line[4].ToString()), Mount = line[5].ToString() }); }