【发布时间】:2011-09-28 07:05:17
【问题描述】:
是否可以在使用 FileStream 创建文件时同时应用 FileAttributes?我想使用 FileAttributes.Temporary 文件属性创建用于流写入的文件。
【问题讨论】:
标签: c# .net-4.0 filestream file-attributes
是否可以在使用 FileStream 创建文件时同时应用 FileAttributes?我想使用 FileAttributes.Temporary 文件属性创建用于流写入的文件。
【问题讨论】:
标签: c# .net-4.0 filestream file-attributes
您可以使用FileOptions.DeleteOnClose 作为参数之一。完成操作并处置流后,文件将自动删除。
【讨论】:
using 构造并正确处理流,而无需使用 try..finally。那么,为什么你需要它在一行中呢?
是的,当然你也可以使用 File.SetAttributes 方法来应用 FileAttributes
【讨论】:
为什么需要一次性完成所有操作?
【讨论】:
如果你使用 Win32 CreateFile 方法,你可以做到这一点
uint readAccess = 0x00000001;
uint writeAccess = 0x00000002;
uint readShare = 0x00000001;
uint createAlways = 2;
uint tempAttribute = 0x100;
uint deleteOnClose = 0x04000000;
new FileStream(new SafeFileHandle(NativeMethods.CreateFile("filename",
readAccess | writeAccess,
readShare,
IntPtr.Zero,
createAlways,
tempAttribute | deleteOnClose,
IntPtr.Zero),
true),
FileAccess.ReadWrite, 4096, true);
private static class NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern IntPtr CreateFile(string name, uint accessMode, uint shareMode, IntPtr security, uint createMode, uint flags, IntPtr template);
}
有关详细信息,请参阅CreateFile 的 MSDN 文档
【讨论】: