7

基本的に、存在しない場合はファイルを作成し、メッセージを書き込みます。

if (!File.Exists(filePath + fileName))
    File.Create(filePath + fileName);
StreamWriter sr = new StreamWriter(filePath + fileName,false);

このエラーに対処するにはどうすればよいですか?

別のプロセスで使用されているため、プロセスはファイル 'c:\blahblah' にアクセスできません。

4

3 に答える 3

18

File.CreateFileStream( http://msdn.microsoft.com/en-us/library/d62kzs03.aspx )を開きます。

FileStream破棄しなかったため、ファイルはロックされたままになり、他のハンドル (つまり、その他または全体)から実行された場合、この状況のた​​め、ファイルへの後続のアクセスは失敗しますStreamWriter

このコードは、次IDisposableのようなオブジェクトを操作する方法を示していますFileStream

if (!File.Exists(filePath + fileName))
{
    File.Create(filePath + fileName).Dispose();

    using(StreamWriter sr = new StreamWriter(filePath + fileName,false))
    {

    }
}
于 2013-02-08T15:13:29.293 に答える
4

StreamWriterファイル名を受け取るコンストラクターを使用しないのはなぜですか?

StreamWriter sr = new StreamWriter(filePath + fileName);

MSDNから:

path パラメーターは、Universal Naming Convention (UNC) 共有上のファイルを含むファイル名にすることができます。ファイルが存在する場合は上書きされます。それ以外の場合は、新しいファイルが作成されます。

非常にマイナーな点ですが、Path.Combineファイル名とフォルダー パスを連結するときに使用することを検討できます。

于 2013-02-08T15:13:43.230 に答える
3

単一のメソッドを使用してファイルを作成して開くことにより、コードを簡素化します。

using (FileStream fs = File.OpenWrite(path)) 
{
    Byte[] info = new UTF8Encoding(true)
                         .GetBytes("This is to test the OpenWrite method.");

    fs.Write(info, 0, info.Length);
}

MSDN: ( File.OpenWrite メソッド)

既存のファイルを開くか、書き込み用に新しいファイルを作成します。

于 2013-02-08T15:16:38.467 に答える