1

c# webservice code でファイルを作成した直後にファイルを開くことができません。ディレクトリは最初は存在しません。したがって、プログラムはディレクトリとファイルを作成します。次に、ファイルを開いて行を書き込もうとします。しかし、ファイルを開くことができません。エラーは、ファイルが別のプロセスで開かれていることです。

Windowsエクスプローラーからファイルを開こうとしました。ファイルは開きますが、エラー メッセージは引き続き表示されます。C:\Test フォルダーを削除しようとしましたが、ファイルが開いていると表示され、WebDev.WebDevServer40.exeにあります。

助けてください。

[WebMethod]
    public string saveFileUploaderName(string name)
    {
        string path = "c:\\Test";
        string filename = "Test.txt";
        string completeFileName = Path.Combine(path,filename);
        if(!File.Exists(completeFileName))
        {
            Directory.CreateDirectory(path);
            File.Create(completeFileName);
        }
        StreamWriter writer = File.AppendText(completeFileName);
        writer.WriteLine(name);
        writer.Flush();
        writer.Close();
return "success";
}
4

3 に答える 3

2

File.Create はストリームを返しますが、それを破棄しています。したがって、(私が思うに!) 返されたストリームを使用するか、同じファイルへの新しいストリームを開こうとする前に明示的に閉じる必要があります。

于 2012-09-17T04:33:13.183 に答える
1

ファイルを閉じる必要があります。試してください:

File.Create(completeFileName).Close();
于 2012-09-17T04:44:50.933 に答える
0

代わりにFile.AppendAllTextを使用してください。

これにより、ファイルが存在しない場合は作成されます。

あなたのコードは次のように簡単です

[WebMethod]
public string saveFileUploaderName(string name)
{
    string path = "c:\\Test";
    string filename = "Test.txt";
    string completeFileName = Path.Combine(path,filename);
    File.AppendAllText(completeFileName, name);
    return "success";
}
于 2012-09-17T04:45:21.567 に答える