3

テキストファイルに情報を書き込もうとしていますが、2行目で行間にスペースができています

コード :

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  

また、表示名の行と、おそらく名前の行でも、名前が1行のフルネームになるようにします。

たとえば、表示名: 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
4

3 に答える 3

5

ループで 2 回呼び出しWriteLineたので、項目ごとに 2 行追加しています。たとえば、 1行だけ追加したい

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

ただし、スペースは埋められないため、複合フォーマット文字列に配置の側面を含める必要があります。左パディングが必要なため、負の位置合わせが必要で、スペースの前に 12 文字が必要なように見えるので、次のようにします。

w.WriteLine("{0,-12} {1}", ManageObject["Name"], ManageObject["DisplayName"]);
于 2013-07-23T21:48:09.187 に答える
0

これらのタイプの問題に対する優れた解決策を見つけました テキストファイルにフォーマットされたテーブルを作成するC#関数

于 2014-03-19T05:10:50.210 に答える