0

StreamWriterオブジェクトを使用して、コンストラクターによって作成されたファイルまたは既に存在するファイルに書き込みます。ファイルが存在する場合は、データを追加します。そうでない場合は、ファイルを作成してからデータを追加する必要があります。問題は、ファイルを作成する必要がある場合、StreamWriterコンストラクターがファイルを作成しますが、ファイルにデータを書き込まないことです。

bool fileExists = File.Exists(filePath);

using (StreamWriter writer = new StreamWriter(filePath, true))
{
    if (!fileExists)
    {
        writer.WriteLine("start");
    }

    writer.WriteLine("data");
}

編集:答えてくれてありがとう。usingブロックは、ライターを閉じる処理を行います。それが彼らのために働くと言っている他の人々に関して、私があなたに問題をさらに診断するためにあなたに与えることができる情報はありますか?ファイルはネットワークを介してローカライズされます。それは潜在的な問題である可能性があります。「パスの一部が見つかりませんでした...」および「指定されたネットワーク名は使用できなくなりました」というエラーが断続的に表示されます。

4

6 に答える 6

1

了解しました。わかりました。ローカルマシンで、ネットワーク経由でファイルに断続的にアクセスする際に問題が発生していました。コードをサーバーにアップロードし、問題なく実行しました。私は本当にすべての助けに感謝します。申し訳ありませんが、ソリューションはあまりエキサイティングではありませんでした。

于 2009-07-20T15:41:16.460 に答える
1

コードは私のコンピューターで正常に実行されました。変数 filePath の内容を知ることができますか? おそらく、間違ったファイルを見ていました...

更新: ネットワークの問題? 誰かがネットワークの反対側で何かをしていたのかもしれません。ローカル ファイルへの書き込みを試みます。動作する場合は、別の場所にあるリモート ファイルに書き込んでみてください。

于 2009-07-20T15:15:48.850 に答える
0

投稿した他の人と同様に、あなたのコードは私のPCで正常に機能しています。

コードを2つの部分に分割すると役立つ場合があります。最初の部分はファイルがまだ存在しない場合はヘッダーを書き込み、2番目の部分はデータを書き込みます。

try
{
    using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
    {
        using (StreamWriter sw = new StreamWriter(fs))
        {
            sw.WriteLine("start");
        }
    }
}
catch (IOException ex)
{
}

using (StreamWriter writer = new StreamWriter(filePath, true))
{
    writer.WriteLine("data");
}
于 2009-07-20T15:27:47.267 に答える
0

あなたのコードは私のために機能します.3回実行した後、私は次のことを行いました:

始める
データ
データ
データ

ファイルにアクセスしようとしていない、何らかの理由でファイルに書き込めないということは確かですか? また、データをフラッシュする必要がありますが、念のため、writer.Close()破棄する前に配置してください。これで問題が解決しない場合は、適切なフラグDispose()を使用して手動でファイルを作成してみてください。File.Create()

//編集: 私は自分のマシンでこのコードを試しました:

public unsafe static void Main()
{
    string filePath = @"\\COMP-NAME\Documents\foo.txt";
    FileStream fs = null;
    if (!File.Exists(filePath))
        fs = File.Create(ファイルパス);
    そうしないと
        fs = File.Open(filePath, FileMode.Append);

    使用 (StreamWriter ライター = 新しい StreamWriter(fs))
    {
        writer.WriteLine("データ");
    }
}

そして、スムーズに動作します。これを試してみませんか?

于 2009-07-20T15:12:17.313 に答える
0

あなたのコードは私にとって正しく機能しました..

using ステートメントを試す

using (StreamWriter writer = new StreamWriter(filePath, true))
{
    if (!fileExists)
    {
        writer.WriteLine("start");
    }

    writer.WriteLine("data");
    writer.Flush();
}
于 2009-07-20T15:13:01.807 に答える
0

File.Open関数を試すことができます。一番下に良い例があり、FileModes のリストFileMode.Append はあなたが望むものです

于 2009-07-20T15:16:07.073 に答える