【发布时间】:2013-09-06 12:02:55
【问题描述】:
如果您使用FileStream 构造函数之一,您可以指定缓冲区大小(以字节为单位),但如果您使用File.OpenRead,则不能。第二种情况下使用的缓冲区大小的默认值是多少?
【问题讨论】:
如果您使用FileStream 构造函数之一,您可以指定缓冲区大小(以字节为单位),但如果您使用File.OpenRead,则不能。第二种情况下使用的缓冲区大小的默认值是多少?
【问题讨论】:
用Telerik JustDecompile看代码,是4096 B:
public static FileStream OpenRead(string path)
{
return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
}
public FileStream(string path, FileMode mode, FileAccess access, FileShare share) : this(path, mode, access, share, 4096, FileOptions.None, Path.GetFileName(path), false)
{
}
【讨论】:
它是4096,你可以从这个构造函数中看到:
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileAccess access, FileShare share)
: this(path, mode, access, share, 4096,
FileOptions.None, Path.GetFileName(path), false)
{
}
这就是OpenRead调用的构造函数:
public static FileStream OpenRead(string path)
{
return new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
}
【讨论】: