1

フォルダ内のすべてのファイルを読み取り、ファイルに書き込むコードを作成しました。すべてのコードは準拠して正常に実行されますが、ファイルのファイル名は新しいファイルに表示されません。

コード:

private void Form1_Load(object sender, EventArgs e)
{
    DialogResult result = folderBrowserDialog1.ShowDialog(); // Show the dialog.
    // create a list to insert the data into
    //put all the files in the root directory into array
    string[] array1 = Directory.GetFiles(@"C:\Users\a3708906\Documents\Filereader m 15062012", "*.csv");

    // Display all files.
    TextWriter tw1 = new StreamWriter("C:/Users/a3708906/Documents/Filereader m 15062012/Filereader m 15062012/listoffiles.txt");
    List<string> filenames = new List<string>();
    tw1.WriteLine("--- Files: ---");
    foreach (string name in array1)
    {
            tw1.WriteLine(name);
    }
    tw1.Close();
}

よろしくお願いします。

4

6 に答える 6

1

ユーザーにフォルダーの場所を尋ねるのに苦労しましたが、そのフォルダーの場所を取得していません。コードは

    string[] array1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.csv");

    // Display all files.
    TextWriter tw1 = new StreamWriter(folderBrowserDialog1.SelectedPath+"/listoffiles.txt");
于 2012-06-15T11:25:57.123 に答える
0

フォルダーパスの「スペース」がめちゃくちゃになっていると思います。msdnの説明に従って、「空白」をエスケープしてみてください。

于 2012-06-15T11:27:10.820 に答える
0

ファイルが作成されていない場合 (つまり、空白であってもファイルが存在しない場合)、ストリーム ライターに問題があります。この場合、スラッシュの方向を変更して、パスが

TextWriter tw1 = new StreamWriter("C:\\Users\\a370890\\Documents\\Filereader m 15062012\\Filereader m 15062012\\listoffiles.txt");

ファイルが作成されても何も書き込まれない場合は、flush コマンドを確認してください。

tw1.Flush();
于 2012-06-15T11:19:45.110 に答える
0

GetFilesブレークポイントを設定して、ファイルが返されていることを確認します。

(array1 の名前をより意味のあるものに変更することを検討してください)

ブレークポイントをオンに設定し、tw1.WriteLine(name)ヒットしていることを確認します。

問題を簡単に確認できるはずです。私の推測では、GetFiles からファイルが返されていないだけだと思いますが、ブレークポイントで確実にわかります。出力ファイルは作成されているが、ファイルが見つからない場合 - これは最も可能性の高いケースです。

出力ファイルが存在しない場合。ファイルの書き込みコードを詳しく見てください。

于 2012-06-15T11:20:06.410 に答える
0

ファイルパスまたはファイル書き込み機能に問題があると思います。

folderbrowserdialog を使用しますが、選択したファイル名を取得するために使用しません。代わりに、パスを手動で指定します。また、出力パスに問題がある可能性があります。

于 2012-06-15T11:20:08.300 に答える