我正在尝试将一些信息写入文本文件,但第二行在行之间留有空格
编码 :
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();
}
Run Code Online (Sandbox Code Playgroud)
一旦我添加了这一行:
w.WriteLine(" " + ManageObject["DisplayName"].ToString());
Run Code Online (Sandbox Code Playgroud)
文本文件中的结果是这样的:
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
Run Code Online (Sandbox Code Playgroud)
在我添加该行之前,文本文件是这样的:
Module Name Display Name Driver Type Link Date
============ ====================== ============= ======================
1394ohci
3ware
ACPI
acpiex
acpipagr
AcpiPmi
Run Code Online (Sandbox Code Playgroud)
我现在只想添加 Display Name 行,所以我添加了空格,因此该行将从 Display Name 下开始,然后在行之间添加空格。
我该如何解决?
**
最后,文本文件应如下所示:
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
Run Code Online (Sandbox Code Playgroud)
并且在显示名称行中,也可能在模块名称行中,以确保名称在一行中是全名。
例如在显示名称中:1394 OHCI Compliant Ho 应该是:1394 OHCI Compliant Host Controller
**
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
Run Code Online (Sandbox Code Playgroud)
您WriteLine在循环中调用了两次 - 因此它为每个项目添加了两行。你只需要添加一个线,如
w.WriteLine("{0} {1}", ManageObject["Name"], ManageObject["DisplayName"]);
Run Code Online (Sandbox Code Playgroud)
但是,这不会填充空格,因此您需要在复合格式 string 中包含对齐方面。你想要左填充,所以你需要一个负对齐,看起来你想要空格前的 12 个字符,所以:
w.WriteLine("{0,-12} {1}", ManageObject["Name"], ManageObject["DisplayName"]);
Run Code Online (Sandbox Code Playgroud)