我一直在阅读文件类的静态方法更好地用于在文件上执行少量和少量任务,例如检查它是否存在以及我们应该使用的实例如果我们要对特定文件执行许多操作,则 FileInfo 类。
我理解这一点,可以盲目地使用它,但我想知道为什么会有区别?它们的工作方式是什么使它们适合不同的情况?让这2个不同的类看起来以不同的方式做同样的事情有什么意义呢?
如果有人能够至少回答其中一个问题,那将会很有帮助。
答案 0 :(得分:79)
通常,如果要对文件执行单个操作,请使用File
类。如果您对同一文件执行多项操作,请使用FileInfo
。
这样做的原因是因为访问文件时进行了安全检查。创建FileInfo
的实例时,检查仅执行一次。但是,每次使用静态File
方法时都会执行检查。
答案 1 :(得分:6)
“File和FileInfo类的方法类似,但它们的不同之处在于File类的方法是 static ,所以你需要传递的参数多于你的方法。 FileInfo实例。您需要这样做,因为它在特定文件上运行;例如,FileInfo.CopyTo()方法为用于复制文件的目标路径采用一个参数,而File.Copy()方法采用源路径和目标路径的两个参数。“
http://www.aspfree.com/c/a/C-Sharp/A-Look-at-C-Sharp-File-and-FileInfo-Classes/1/
http://www.intelliott.com/blog/PermaLink,guid,ce9edbdb-6484-47cd-a5d6-63335adae02b.aspx
答案 2 :(得分:5)
File.Exists的执行速度比新的FileInfo(filePath).Exists要快得多 - 特别是在网络上并提供文件实际存在。这是因为File.Exists只检查文件是否存在,而新的FileInfo(filePath).Exists首先构造一个FileInfo对象,该对象包含文件的所有属性(日期,大小等)(如果存在)。
根据我的经验,通过使用File.Exists,即使通过网络检查10个文件的存在也明显更快(即20ms vs 200ms)。
答案 3 :(得分:3)
文件针对文件的一次性操作进行了优化,FileInfo针对同一文件的多个操作进行了优化,但通常不同方法实现之间没有太大区别。
如果要比较确切的实现,请使用Reflector查看这两个类。
答案 4 :(得分:3)
可能需要FileInfo来处理访问控制属性。其余的是静态与实例选择,你可以选择方便的东西。
答案 5 :(得分:2)
是的,其中一个原因可能是,因为Nag说文件是一个实用程序类,因此不需要创建实例。同时,由于File是实用程序类,每次都需要进行安全检查。
另一方面,FileInfo需要创建实例,并且它使用安全检查。因此,现在使用FileInfo执行多个操作不会调用安全检查。
答案 6 :(得分:1)
FileInfo是文件的实例,因此表示文件本身。文件是一个实用程序类,因此可以使用任何文件
答案 7 :(得分:1)
最近我遇到File.Exist
的问题,我讨厌这个功能。在我使用Fileinfo
类Exist
函数之后,我的程序工作正常。
实际上在开发环境File.Exist
中发生的事情很有效,但是当它进入实时环境时,由于这个原因我阻止了文件对象,因为我得到了错误访问被拒绝而无法使用该文件。
这是我的学习。
我永远不会使用File.Exist
方法最好是创建对象然后使用它。请注意使用静态方法。
答案 8 :(得分:0)
的FileInfo:
文件:
的src:
答案 9 :(得分:0)
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
# initialize gui interface
root=Tk()
root.geometry("510x200")
global folder_selected, path
def getFolderPath():
# do somthing
btnFind = ttk.Button(root, text="Browse Folder",command=getFolderPath)
def down():
#do somthing
dwn=ttk.Button(root,text="Download",width='25',command=down)
dwn.place(x=190,y=120)
root.mainloop()
类和File
类之间的主要区别是
FileInfo
和File
类的两个成员都装饰有FileInfo
属性,但是[System.Security.SecurityCritical] and [System.Security.SecuritySafeCritical]
类具有“多个安全检查” 作为与File
类(Read Here)相比,每次调用FileInfo
类的静态成员时都会执行检查。创建
File
的实例时,检查仅执行一次。
FileInfo
是静态类型类,而File
是实例类型类。FileInfo
类的成员,您需要创建一个实例,而在FileInfo
类中,您可以直接访问其成员而无需创建实例。File
实例方法而不是FileInfo
类的相应静态方法会更有效。File
类相比,File
类提供了更多的方法。 FileInfo