14

この構文ですか

 FileStream fs = new FileStream(strFilePath, FileMode.Create);

これと同じ?

FileStream fs = File.Create(strFilePath);

はいの場合、どちらが良いですか?

4

6 に答える 6

13

JustDecompile によると、File.Create最終的には次のように呼び出すため、これは重要です。

new FileStream(path, 
               FileMode.Create, 
               FileAccess.ReadWrite, 
               FileShare.None, 
               bufferSize, 
               options);

bufferSize4096 (デフォルト) とFileOptions.None(FileStream コンストラクターと同じ) を使用しますが、フラグFileShareが異なります。FileStream コンストラクターは、FileShare.Read.

つまり、読みやすさを重視しFile.Create(string)、他のオプションを気にしない場合は使用してください。

于 2012-08-21T14:26:55.860 に答える
8

私の意見では、私はこれを使用します:

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); を使用すると、柔軟性と管理が大幅に向上します。しかし、この時点では、より読みやすさや管理オプションが必要な場合は、より個人的な選択になります!

于 2012-08-21T14:27:35.303 に答える
2

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!
}
于 2012-08-21T14:32:10.557 に答える
1

彼らはまったく同じことをします。唯一の本当の違いは、前者は必要に応じて実行時に別のFileModeを使用できるようにし(変数で制御する)、後者はCreate操作のみを実行することです。

ちなみに、慣例として、usingブロック内のファイルストリームなどを処理して、スコープ外の場合は自動的に破棄します。

using (var fs = new FileStream(strFilePath, FileMode.Create))
{
    //do some stuff
}
于 2012-08-21T14:28:13.647 に答える
0

最初のものでは、ハンドル、ファイルアクセス、ファイルモード、intバッファサイズなど、より多くのオプションを実行できますが、2番目のオプションでは、実行するオプションが少なくなります。

于 2012-08-21T14:29:56.890 に答える
0

1 つ目は共有読み取りアクセスでファイルを作成または上書きし、2 つ目は None です。したがって、ファイルの処理中にアクセスを許可するかどうかによって異なります。

于 2012-08-21T14:27:32.513 に答える