https://docs.microsoft.com/en-us/dotnet/api/microsoft.win32.safehandles.safefilehandle?view=netframework-4.8
http://www.dotnetframework.org/default.aspx/DotNET/DotNET/8@0/untmp/whidbey/REDBITS/ndp/clr/src/BCL/Microsoft/Win32/SafeHandles/SafeFileHandle@cs/1/SafeFileHandle@cs
https://csharp.hotexamples.com/examples/-/SafeFileHandle/-/php-safefilehandle-class-examples.html
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwizlPG3ornlAhVFCKwKHUl9DxIQFjABegQIAxAB&url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fdotnet%2Fapi%2Fmicrosoft.win32.safehandles.safefilehandle.-ctor&usg=AOvVaw3M0YPCVH1439KghalbcDfG
https://docs.microsoft.com/en-us/dotnet/api/system.io.filestream.safefilehandle?view=netframework-4.8
https://docs.microsoft.com/en-us/dotnet/api/microsoft.win32.safehandles.safefilehandle?redirectedfrom=MSDN&view=netframework-4.8
Эти ссылки предоставляют информацию о SafeFileHandle
, а некоторые предоставляют исходный код.
Вы также можете проверить это: Как правильно закрыть дескриптор SafeFile
IntPtr
...
Это "родное (зависящее от платформы) целое число размера". Внутри он представлен как void *, но представлен как целое число. Вы можете использовать его всякий раз, когда вам нужно сохранить неуправляемый указатель и не хотите использовать небезопасный код. IntPtr.Zero фактически равен NULL (нулевой указатель).
Pointer
...
В общем случае (для разных языков программирования) указатель представляет собой число, представляющее физическое расположение в памяти. ,Нулевой указатель - это (почти всегда) указатель, который указывает на 0 и широко признан как «не указывающий ни на что». Поскольку системы имеют различное количество поддерживаемой памяти, для хранения этого числа не всегда требуется одинаковое количество байтов, поэтому мы называем «целое число собственного размера», которое может содержать указатель на любую конкретную систему.
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
имя.
Я надеюсь, что помогаю вам, Проф Софт:)