2017-01-15 7 views
0

У меня есть несколько текстовых файлов, которые все следуют один и тот же формат контента:Создать список массивов из текстового файла в C#

"Title section","Version of the app" 
10 
"<thing 1>","<thing 2>","<thing 3>","<thing 4>","<thing 5>","<thing 6>","<thing 7>","<thing 8>","<thing 9>","<thing 10>" 

'Where: 
' first line never changes, it always contains exactly these 2 items 
' second line is a count of how many "line 3s" there are 
' line 3 contains a command to execute and (up to) 9 parameters 
'  - there will always be 10 qoute-delimited entries, even if some are blank 
'  - there can be N number of entries (in this example, there will be 10 commands to read) 

Я читаю каждый из этих текстовых файлов, используя StreamReader, и хотите задайте каждый файл в своем классе.

public class MyTextFile{ 
    public string[] HeaderLine { get; set; } 
    public int ItemCount { get; set; } 
    List<MyCommandLine> Commands { get; set;} 
} 

public class MyCommandLine{ 
    public string[] MyCommand { get; set; } 
} 

private void btnGetMyFilesiles_Click(object sender, EventArgs e){ 
    DirectoryInfo myFolder = new DirectoryInfo(@"C:\FileSpot"); 

    FileInfo[] myfiles = myfolder.GetFiles("*.ses"); 

    string line = ""; 
    foreach(FileInfo file in Files){ 
     str = str + ", " + file.Name; 

     // Read the file and display it line by line. 
     System.IO.StreamReader readingFile = new System.IO.StreamReader(file.Name); 
     MyTextFile myFileObject = new MyTextFile() 

     while ((line = readingFile.ReadLine()) != null){ 
      ' create the new MyTextFile here 
     } 
     file.Close(); 
     } 
    } 
} 

Цель состоит в том, чтобы определить, что фактическая команда называют это («»), и если какой-либо из остальных параметров указывают на заранее существующий файл, определить, существует ли этот файл. Моя проблема заключается в том, что я не могу понять, как читать N число «строка 3» в свои собственные объекты и добавлять эти объекты в объект MyTextFile. Я на 99% уверен, что я сбился с пути при чтении каждого файла по очереди, но я не знаю, как выйти из него.

ответ

1

Итак, обращаясь к конкретной проблеме получения N номера строки 3 в вашем классе, вы можете сделать что-то вроде этого (очевидно, вы можете внести некоторые изменения, чтобы они были более конкретными для вашего приложения).

public class MyTextFile 
{ 
    public List<Array> Commands = new List<Array>(); 

    public void EnumerateCommands() 
    { 
     for (int i = 0; i < Commands.Count; i++) 
     { 
      foreach (var c in Commands[i]) 
       Console.Write(c + " "); 
      Console.WriteLine(); 
     } 
    } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     string line = ""; 
     int count = 0; 
     MyTextFile tf = new MyTextFile(); 
     using (StreamReader sr = new StreamReader(@"path")) 
     { 
      while ((line = sr.ReadLine()) != null) 
      { 
       count += 1; 

       if (count >= 3) 
       { 
        object[] Arguments = line.Split(','); 
        tf.Commands.Add(Arguments); 
       } 
      } 
     } 
     tf.EnumerateCommands(); 
     Console.ReadLine(); 
    } 
} 

По крайней мере, теперь у вас есть список команд в пределах своего класса «MyTextFile», которые вы можете перечислить через и делать вещи с.

** Я добавил метод EnumerateCommands, чтобы вы могли видеть, что список хранит позиции. Код должен запускаться в консольном приложении с соответствующими операциями «using».

Надеюсь, это поможет.

+0

Именно то, что я искал. Он продолжает удивлять меня тем, как простые решения являются наиболее часто забываемыми. Спасибо. – Kulstad

0

Если все разделяют с комой знаком , вы можете просто сделать что-то вроде:

int length = Convert.ToInt32 (reader.ReadLine()); string line = reader.ReadLine(); IEnumerable <string> things = line.Split (',').Select (thing => thing. Replace ('\"'', string.Empty).Take(length);

Take показывает, сколько things взять из строки.

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

  • Нет связанных вопросов^_^