FileInfo
オブジェクトを新規作成してこれらのメソッドを呼び出すのではなく、File
オブジェクトの静的メソッドを使用するのには違いがありますか?私は、この意志はあなたを役に立てば幸いFile.Delete()とFileInfo.Delete()との比較
答えて
についてテサのリンクを参照してください。解決されたパス。
あなたはパスが相対的であるということを意味していますが、 'File.Delete()'がWin32のDeleteメソッドを呼び出す直前に作業を行う必要があります。 'FileInfo'では、パスは作成時にすでに絶対パスに解決されています。これはあなたが言っていることの正しい解釈ですか?言い換えれば、これは、 'File.Delete()'が同じ相対パスで十分頻繁に呼び出されるため、パフォーマンスに影響を与える可能性があるシーンの背後でCLRが行う作業です。 –
@TimCoker - それは正しいです。既にFileInfoを持っているならば、 'Path.GetFullPathInternal'への呼び出しを保存することができます。これは、パスを正規化/解決するための少しの作業です。 @errorstacksが指摘するように、1つは静的メソッドであり、1つはインスタンスです。したがって、FileInfoのインスタンスなしでFileInfo.Deleteを呼び出すことはできません。あなたがそれを持っていると仮定すると、唯一の違いはパスの解決です。 – CodeNaked
いいえ、彼らは利便
のために複製されます...
IO.FileInfo
インスタンス作成のための方法、コピー、削除、移動、ファイルを開くと、中に補助を提供System.IO.FileStream objects
の作成。このクラスは継承できません。
つまり、このプロセスを実行するには、FileInfoのインスタンス/オブジェクトを作成する必要があります。
IO.Fileは、ファイルの作成、コピー、削除、移動、および開くための静的メソッドを提供し、System.IO.FileStreamオブジェクトの作成を支援します。
つまり、このプロセスを実行するにはFileInfoのインスタンス/オブジェクトを作成する必要はありません。
はFileInfo
が既に持っている必要がありながら、持っている、(それは相対的であると仮定)より情報の唯一の違いは、File
が指定されたパスを解決しなければならないということです
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
によって異なります。単一の操作を実行する場合はFile
クラスを使用し、同じファイルに対して複数の操作を実行する場合はFileInfo
を使用します。
EDIT: Fileクラスの静的メソッドが常にセキュリティをチェックすることを私は理解しています。しかし、FileInfoのインスタンスを再利用している場合、メソッドは最初の時にのみセキュリティチェックを行い、それ以降の各呼び出しでは行いません。
投票をしたときには、理由を知っていることを忘れてしまいました。Q/Aサイトでも、学習リソースです...答えが完全にランチになっていくつかの情報が得られます... – Jesse
私はあなたがdownvotedになった理由も不思議です。あなたは興味深い点をそこに作った。 –
私はdownvoteをしなかったが、おそらく私は持っていただろう。あなたはあなたの推薦のために非常に曖昧な根拠を提供しました。それが正しいと感じたら、参考にしてバックアップしてください。 –
いいえ、基本的には同じことです。
どちらも、ほとんど差がないWin32Native.DeleteFile()
を呼んでいます。どちらも存在する場合はファイルを削除し、存在しない場合は例外をスローします。
それは本当ではない(少なくとも真ではない)FileInfo.Deleteはファイルが存在しない場合は何もしません。http://msdn.microsoft.com/en-us/library/system.io.fileinfo.delete(v = vs.110).aspx – Robba
- 1. Googleアナリティクスとリアルタイムアナリティクスの比較:ChartbeatとClickyとMixpanelの比較
- 2. カウントループと比較
- 3. コピーデータと比較
- 4. 比較条件と比較条件
- 5. MySQLの比較と '%'
- 6. OrElseとの比較
- 7. プライベートインターフェイスとの比較
- 8. ViewStateとクッキーとの比較対キャッシュの比較
- 9. MPI_IprobeとMPI_Probeとの比較
- 10. BroadcastReceiver.getResultsExtra()とIntent.getExtras()との比較
- 11. FuzzyとSeleniumとの比較
- 12. NULLとINTとの比較
- 13. React.ComponentとReact.PureComponentとの比較
- 14. iosとjsonとの比較
- 15. ELとequalIgnoreCaseとの比較
- 16. OnItemClickListenerとOnItemTouchListenerとの比較
- 17. AXとゼロとの比較
- 18. mapsqlparametersourceとjava.util.mapとの比較
- 19. HttpContextとHttpListenerContextとの比較
- 20. Display.asyncExecとDisplay.timerExecとの比較
- 21. DataSourceUtils.getConnectionとDataSource.getConnectionとの比較
- 22. PHPとWordPressとの比較
- 23. BufferedOutputStreamとByteArrayOutputStreamとの比較
- 24. momentjsとタイムゾーンとの比較
- 25. NullReferenceExceptionとMSILとの比較
- 26. IDeserializationCallbackとOnDeserializedAttributeとの比較
- 27. モンテカルロ法と進化的アルゴリズムの比較と比較
- 28. 翡翠テンプレートと口ひげテンプレートの比較と比較
- 29. ループと比較arrylist
- 30. Mysqlコマンドケースサブクエリと比較
1つは静的で、もう1つはインスタンスを取ります。 :) – leppie