この構文ですか
FileStream fs = new FileStream(strFilePath, FileMode.Create);
これと同じ?
FileStream fs = File.Create(strFilePath);
はいの場合、どちらが良いですか?
この構文ですか
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 です。したがって、ファイルの処理中にアクセスを許可するかどうかによって異なります。