加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在文件中格式化文本表,将每行合并两行

发布时间:2020-12-16 01:56:10 所属栏目:百科 来源:网络整理
导读:我正在尝试将一些信息写入文本文件,但第二行在行之间创建空格 代码 : private void CreateDriversList(){ StreamWriter w = new StreamWriter(contentDirectory + "" + "Drivers.txt"); w.WriteLine("Module Name Display Name Driver Type Link Date");
我正在尝试将一些信息写入文本文件,但第二行在行之间创建空格

代码 :

private void CreateDriversList()
{
    StreamWriter w = new StreamWriter(contentDirectory + "" + "Drivers.txt");
    w.WriteLine("Module Name  Display Name           Driver Type   Link Date");
    w.WriteLine("============ ====================== ============= ======================");
    //Declare,Search,and Get the Properties in Win32_SystemDriver
    System.Management.SelectQuery query = new System.Management.SelectQuery("Win32_SystemDriver");
    System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher(query);
    foreach (System.Management.ManagementObject ManageObject in searcher.Get())
    {
        w.WriteLine(ManageObject["Name"].ToString());
        w.WriteLine("             " + ManageObject["DisplayName"].ToString());
    }
    w.Close();
}

一旦我添加了这条线:

w.WriteLine("             " + ManageObject["DisplayName"].ToString());

文本文件中的结果如下:

Module Name  Display Name           Driver Type   Link Date
============ ====================== ============= ======================
1394ohci
             1394 OHCI Compliant Host Controller
3ware
             3ware
ACPI
             Microsoft ACPI Driver
acpiex
             Microsoft ACPIEx Driver
acpipagr

在我添加行之前,文本文件是这样的:

Module Name  Display Name           Driver Type   Link Date
============ ====================== ============= ======================
1394ohci
3ware
ACPI
acpiex
acpipagr
AcpiPmi

我只是想现在添加显示名称行,所以我添加了空格,因此行将在显示名称下开始,然后在行之间添加空格.

我怎么解决呢?

**

最后,文本文件应如下所示:

Module Name  Display Name           Driver Type   Link Date             
============ ====================== ============= ======================
1394ohci     1394 OHCI Compliant Ho Kernel        7/26/2012 5:26:46 AM  
3ware        3ware                  Kernel        3/8/2012 10:33:45 PM  
ACPI         Microsoft ACPI Driver  Kernel        9/20/2012 9:09:16 AM  
acpiex       Microsoft ACPIEx Drive Kernel        7/26/2012 5:25:57 AM  
acpipagr     ACPI Processor Aggrega Kernel        7/26/2012 5:27:16 AM  
AcpiPmi      ACPI Power Meter Drive Kernel        7/26/2012 5:27:33 AM  
acpitime     ACPI Wake Alarm Driver Kernel        7/26/2012 5:27:37 AM

并在显示名称行中,也可能在moudle名称行中,以确保名称将在一行全名.

例如,在显示名称中:1394 OHCI Compliant Ho
应该是:1394 OHCI兼容主机控制器

**

Module Name  Display Name           Driver Type   Link Date
============ ====================== ============= ======================
1394ohci     1394 OHCI Compliant Host Controller
3ware        3ware
ACPI         Microsoft ACPI Driver
acpiex       Microsoft ACPIEx Driver
acpipagr     ACPI Processor Aggregator Driver
AcpiPmi      ACPI Power Meter Driver

解决方法

你已经在循环中调用了WriteLine两次 – 所以它为每个项添加了两行.您只想添加一行,例如

w.WriteLine("{0} {1}",ManageObject["Name"],ManageObject["DisplayName"]);

这不会填充空格,所以你需要在composite format string中包含一个对齐方面.你想要左边填充,所以你需要一个负对齐,看起来你想在空格前有12个字符,所以:

w.WriteLine("{0,-12} {1}",ManageObject["DisplayName"]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读