この構文ですか
FileStream fs = new FileStream(strFilePath, FileMode.Create);
これと同じ?
FileStream fs = File.Create(strFilePath);
はいの場合、どちらが良いですか?
JustDecompileによると、File.Create
は最終的に次のように呼び出すため、これは重要です。
new FileStream(path,
FileMode.Create,
FileAccess.ReadWrite,
FileShare.None,
bufferSize,
options);
bufferSize
が4096(デフォルト)でFileOptions.None
(FileStreamコンストラクターと同じ)ですが、FileShare
フラグが異なります。FileStreamコンストラクターはFileShare.Read
でストリームを作成します。
つまり、読みやすくするために、他のオプションを気にしない場合はFile.Create(string)
を使用してください。
私の意見では、私はこれを使用します:
using (FileStream fs = new FileStream(strFilePath, FileMode.Create))
{
fs.Write("anything");
fs.Flush();
}
基本的に同じことをしますが、これはファイルを作成して作成/書き込みモードで開き、バッファサイズとすべてのパラメータを設定できます。
new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None, bufferSize, options);
File.Createを使用すると、これらすべてのデフォルトのバッファーとパラメーターがラップされます。新しいFileStream(strFilePath、FileMode.Create);を使用すると、柔軟性と管理が大幅に向上します。ただし、読みやすさや管理オプションを増やしたい場合は、現時点では個人的な選択になります。
2つ目は、ストリームに異なるFileModeを使用します。この記事をご覧ください
http://msdn.Microsoft.com/en-us/library/47ek66wy.aspx
このメソッドのデフォルト値を管理するには!
ただし、using
ステートメントを使用すると、すべてのリソースが正しい方法で解放されます。
using (FileStream fs = new FileStream(strFilePath, FileMode.Create))
{
// HERE WHAT YOU WANT TO DO!
}
彼らはまったく同じことをします。唯一の本当の違いは、前者は必要に応じて実行時に異なるFileModeを使用できるようにし(変数で制御する)、後者はCreate操作のみを実行することです。
ちなみに、慣例として、usingブロック内のファイルストリームなどを処理して、スコープ外の場合は自動的に破棄します。
using (var fs = new FileStream(strFilePath, FileMode.Create))
{
//do some stuff
}
最初のものでは、ハンドル、ファイルアクセス、ファイルモード、intバッファサイズなどのように実行するオプションが多くなりますが、2番目のものでは実行するオプションが少なくなります。
1つ目は、読み取りアクセスを共有してファイルを作成または上書きし、2つ目はNoneを使用します。したがって、ファイルの処理中にアクセスを許可するかどうかによって異なります。