2013-08-28 164 views
0

我试图将我的数据输出到控制台屏幕和文本文件。我有点卡住了,希望有人能帮忙。我有一些帮助与Main()来解析我的文件,并设置了一个类来引导我通过,但仍然不知道如何获取信息到屏幕和文本文件。我的代码如下。C#语言控制台应用程序

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

你没有做任何事情,当你输出的每一行。在Line类

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()方法:你应该这样做:

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

当我替换这个lines.ToList()。ForEach(Console.WriteLine);与lines.ToList()。ForEach(l => Console.WriteLine(l.User));我仍然一无所获。不知道问题出在哪里。 –

1

只要改变Main()方法来此。

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”,lines);参数无效。 –

+0

@Alex,我认为他的.net版本使用['string []'](http://msdn.microsoft.com/en-us/library/92e05ft3(v = vs.90).aspx)过载。 – gunr2171

+0

@ gunr2171你是对的!任何方式将其转换为字符串? –