[英]What is SafeFileHandle in c# and when should i use?
While I am still learning System.IO, in File
Stream
class 's constructors, I found that there are overloaded constructors with the type named SafeFileHandle
, I tried to search on the internet and the MSDN Documention, but I can't understand anything,我发现了更奇怪的词,比如IntPtr
,谁能给我解释一下?
public FileStream (Microsoft.Win32.SafeHandles.SafeFileHandle handle, System.IO.FileAccess access, int bufferSize, bool isAsync);
有人可以解释一下吗,或者有没有好的网站可以学习..?
https://csharp.hotexamples.com/examples/-/SafeFileHandle/-/php-safefilehandle-class-examples.html
这些链接提供有关SafeFileHandle
的信息,有些提供源代码。
您还可以查看: 如何正确关闭 SafeFile 句柄
IntPtr
...
这是一个“本机(特定于平台)大小的 integer”。 它在内部表示为 void*,但公开为 integer。 您可以在需要存储非托管指针并且不想使用不安全代码时使用它。 IntPtr.Zero 实际上是 NULL(一个 null 指针)。
Pointer
...
通常(跨编程语言),指针是一个数字,表示 memory 中的物理位置。 null 指针(几乎总是)指向 0,并被广泛认为“不指向任何东西”。 由于系统支持的 memory 数量不同,因此保存该数字并不总是需要相同数量的字节,因此我们将其称为“本机大小整数”,它可以保存任何特定系统上的指针。
SafeFileHandle
kernel32
...
[DllImport("kernel32.dll", SetLastError = true, CharSet=CharSet.Unicode)]
static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess,
uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition,
uint dwFlagsAndAttributes, IntPtr hTemplateFile);
SafeFileHandle
和kernel32
的更多内容...
[DllImport("kernel32.dll", SetLastError = true)]
static extern SafeFileHandle CreateFile(
string lpFileName,
uint dwDesiredAccess,
uint dwShareMode,
IntPtr lpSecurityAttributes,
uint dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplateFile);
private SafeFileHandle handleValue = null;
handleValue = CreateFile(
Path,
GENERIC_WRITE,
0,
IntPtr.Zero,
OPEN_EXISTING,
0,
IntPtr.Zero);
但是,如果您尝试打开File
,请使用System.IO
Controls
要简单地打开一个文件并阅读它的所有文本:
richTextBox1.Text = File.ReadAllText(yourfilename);
您可以将richTextBox1
更改为您的Control
的名称。
我希望我能帮助你,Soft 教授:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.