2013-08-28 3 views
0

Я пытаюсь вывести свои данные на экран консоли и в текстовый файл. Я немного застрял и надеялся, что кто-то может помочь. У меня была некоторая помощь с Main(), чтобы разобрать мой файл и настроить меня с помощью класса, который поможет мне, но все еще не уверен, как получить информацию на экране и в текстовый файл. Мой код ниже.C# language Console App

namespace ConsoleApp1 
{ 

class Program 
{ 
    static void Main(string[] args) 
    {   

    } 

    void Main() 
    { 
     var lines = ReadFile(); 

     lines.ToList().ForEach(Console.WriteLine); 
    } 

    IEnumerable<Line> ReadFile() 
    { 
     using (var reader = new StreamReader(File.OpenRead(@"C:List.txt"))) 
     { 
      const string directoryPrefix = " Directory of "; 
      Regex splittingRegex = new Regex(@"\s+", RegexOptions.Compiled); 
      string directory = null; 
      string line; 

      while ((line = reader.ReadLine()) != null) 
      { 
       line = line.TrimEnd(); 
       if (line.StartsWith(directoryPrefix)) 
       { 
        directory = line.Substring(directoryPrefix.Length); 
        continue; 
       } 

       var lineParts = splittingRegex.Split(line, 6); 
       yield return new Line { Date = lineParts[0], Time = lineParts[1], Period = lineParts[2], Bytes = lineParts[3], User = lineParts[4], Filename = Path.Combine(directory, lineParts[5]) }; 
      } 
     } 
    } 

    class Line 
    { 
     private string date; 
     private string time; 
     private string period; 
     private string bytes; 
     private string user; 
     private string filename; 

     public string Date { get { return date; } set { date = value; } } 
     public string Time { get { return time; } set { time = value; } } 
     public string Period { get { return period; } set { period = value; } } 
     public string Bytes { get { return bytes; } set { bytes = value; } } 
     public string User { get { return user; } set { user = value; } } 
     public string Filename { get { return filename; } set { filename = value; } } 
    } 
} 

}

+1

Изменить все ваши свойства в классе 'Line' в [Авто Свойства] (http://msdn.microsoft.com/en-us /library/bb384054.aspx) и удалите поля поддержки. таких как 'public string Date {get; set;}'. –

+0

@HighCore Я согласен, но это просто косметика. –

ответ

0

Вы не делаете ничего, когда вы выводите в каждой строке. Вы должны сделать это:

lines.ToList().ForEach(l => Console.WriteLine(l.User)); 
+0

Когда я заменяю это lines.ToList(). ForEach (Console.WriteLine); с линиями. ToList(). ForEach (l => Console.WriteLine (l.User)); Я до сих пор ничего не получаю. Не знаю, где проблема. –

1

Просто измените метод Main() это:

private void Main() 
    { 
     var lines = ReadFile().Select(l => l.ToString()).ToList(); 

     // The short way, do them after each other 
     lines.ForEach(Console.WriteLine); 
     File.WriteAllLines(@"C:\Users\Public\TestFolder\WriteLines.txt", lines); 
    } 

и переопределить ToString() метод в классе Line.

private class Line 
{ 
    public string Date { get; set; } 
    public string Time { get; set; } 
    public string Period { get; set; } 
    public string Bytes { get; set; } 
    public string User { get; set; } 
    public string Filename { get; set; } 

    public override string ToString() 
    { 
     // Just an example, you could create an other implementation 
     return string.Format("Filename: {0} - Date: {1}", Filename, Date); 
    } 
} 
+0

Я получаю сообщение об ошибке в этом сообщении File.WriteAllLines (@ "C: \ WriteLines.txt", строки); Недопустимые аргументы. –

+0

@Alex, я думаю, что его версия .net использует перегрузку ['string []'] (http://msdn.microsoft.com/en-us/library/92e05ft3 (v = vs.90) .aspx). – gunr2171

+0

@ gunr2171 Вы правы! Любой способ преобразовать его в строку? –