which one is better to use and why? I mean in which aspects these two commands differ and how? Performance, readability, ...
new FileInfo(path).Name
or
I'd suggest using Path.GetFilename() because it simply parses path and returns file name. On other hand FileInfo
object will check if executed code has rights to access specified file which is relatively slow.
Performancewise Path.GetFilename() will outperform the other version as it is static. Your first version creates an object which has to be instantiated and garbage collected.
Readability: Path.GetFilename() clearly wins IMHO!
The way they figure out the name won't differ much I think.
Simply as you won't have to Create a new Object for using Path.GetFilename() it will perform better.
Here is a Comparison for both:
Code:
Path.GetFileName("G:\\u.png")
IL:
IL_0000: ldstr "G:\u.png"
IL_0005: call System.IO.Path.GetFileName
Code:
new FileInfo("G:\\u.png").Name
IL:
IL_0000: ldstr "G:\u.png"
IL_0005: newobj System.IO.FileInfo..ctor
IL_000A: callvirt System.IO.FileSystemInfo.get_Name