File.Open Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Открывает FileStream в заданном пути.
Перегрузки
Open(String, FileMode, FileAccess, FileShare) |
Открывает FileStream в заданном пути, с заданным режимом доступа для чтения, записи или чтения и записи и с заданным параметром совместного использования. |
Open(String, FileMode) |
Открывает объект FileStream по указанному пути с доступом для чтения и записи без совместного доступа. |
Open(String, FileStreamOptions) |
Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и совместное использование, доступом других файловых потоков к тому же файлу, размером буфера, дополнительными параметрами файла и размером выделения. |
Open(String, FileMode, FileAccess) |
Открывает FileStream в заданном пути с заданным режимом и доступом без совместного доступа. |
Open(String, FileMode, FileAccess, FileShare)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Открывает FileStream в заданном пути, с заданным режимом доступа для чтения, записи или чтения и записи и с заданным параметром совместного использования.
public:
static System::IO::FileStream ^ Open(System::String ^ path, System::IO::FileMode mode, System::IO::FileAccess access, System::IO::FileShare share);
public static System.IO.FileStream Open (string path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share);
static member Open : string * System.IO.FileMode * System.IO.FileAccess * System.IO.FileShare -> System.IO.FileStream
Public Shared Function Open (path As String, mode As FileMode, access As FileAccess, share As FileShare) As FileStream
Параметры
- path
- String
Открываемый файл.
- mode
- FileMode
Значение FileMode указывает, нужно ли создавать файл, если он не существует, и определяет, будет ли содержимое существующих файлов сохранено или перезаписано.
- access
- FileAccess
Значение FileAccess, описывающее операции, которые можно выполнять с файлом.
Возвращаемое значение
Поток FileStream по указанному пути с указанным режимом доступа для чтения, записи или чтения и записи и с указанным параметром совместного доступа.
Исключения
платформа .NET Framework и .NET Core версий старше 2.1: path
строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
-или-
access
указывает Read
, и mode
указывает Create
, CreateNew
, Truncate
или Append
.
path
имеет значение null
.
Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.
Указан недопустимый путь (например, он ведет на несопоставленный диск).
При открытии файла произошла ошибка ввода-вывода.
path
указывает файл, доступный только для чтения, а параметр access
не равен Read
.
-или-
Параметрpath
определяет каталог.
-или-
У вызывающего объекта отсутствует необходимое разрешение.
-или-
mode
имеет значение Create, а указанный файл является скрытым.
mode
, access
или share
задает недопустимое значение.
Файл, заданный параметром path
, не найден.
Параметр path
задан в недопустимом формате.
Примеры
В следующем примере открывается файл с доступом только для чтения и с запретом общего доступа к файлам.
using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
String^ path = "c:\\temp\\MyTest.txt";
// Create the file if it does not exist.
if ( !File::Exists( path ) )
{
// Create the file.
FileStream^ fs = File::Create( path );
try
{
array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );
// Add some information to the file.
fs->Write( info, 0, info->Length );
}
finally
{
if ( fs )
delete (IDisposable^)fs;
}
}
// Open the stream and read it back.
FileStream^ fs = File::Open( path, FileMode::Open, FileAccess::Read, FileShare::None );
try
{
array<Byte>^b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding( true );
while ( fs->Read( b, 0, b->Length ) > 0 )
{
Console::WriteLine( temp->GetString( b ) );
}
try
{
// Try to get another handle to the same file.
FileStream^ fs2 = File::Open( path, FileMode::Open );
try
{
// Do some task here.
}
finally
{
if ( fs2 )
delete (IDisposable^)fs2;
}
}
catch ( Exception^ e )
{
Console::Write( "Opening the file twice is disallowed." );
Console::WriteLine( ", as expected: {0}", e );
}
}
finally
{
if ( fs )
delete (IDisposable^)fs;
}
}
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// Create the file if it does not exist.
if (!File.Exists(path))
{
// Create the file.
using (FileStream fs = File.Create(path))
{
Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
// Add some information to the file.
fs.Write(info, 0, info.Length);
}
}
// Open the stream and read it back.
using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
try
{
// Try to get another handle to the same file.
using (FileStream fs2 = File.Open(path, FileMode.Open))
{
// Do some task here.
}
}
catch (Exception e)
{
Console.Write("Opening the file twice is disallowed.");
Console.WriteLine(", as expected: {0}", e.ToString());
}
}
}
}
open System.IO
open System.Text
let path = @"c:\temp\MyTest.txt"
// Create the file if it does not exist.
if File.Exists path |> not then
// Create the file.
use fs = File.Create path
let info =
UTF8Encoding(true)
.GetBytes "This is some text in the file."
// Add some information to the file.
fs.Write(info, 0, info.Length)
// Open the stream and read it back.
do
use fs =
File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None)
let b = Array.zeroCreate 1024
let temp = UTF8Encoding true
while fs.Read(b, 0, b.Length) > 0 do
printfn $"{temp.GetString b}"
try
// Try to get another handle to the same file.
use fs2 = File.Open(path, FileMode.Open)
// Do some task here.
()
with
| e -> printf "Opening the file twice is disallowed, as expected: {e}"
Imports System.IO
Imports System.Text
Public Class Test
Public Shared Sub Main()
Dim path As String = "c:\temp\MyTest.txt"
' Create the file if it does not exist.
If Not File.Exists(path) Then
' Create the file.
Using fs As FileStream = File.Create(path)
Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
' Add some information to the file.
fs.Write(info, 0, info.Length)
End Using
End If
' Open the stream and read it back.
Using fs As FileStream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None)
Dim b(1023) As Byte
Dim temp As UTF8Encoding = New UTF8Encoding(True)
Do While fs.Read(b, 0, b.Length) > 0
Console.WriteLine(temp.GetString(b))
Loop
Try
' Try to get another handle to the same file.
Using fs2 As FileStream = File.Open(path, FileMode.Open)
' Do some task here.
End Using
Catch e As Exception
Console.Write("Opening the file twice is disallowed.")
Console.WriteLine(", as expected: {0}", e.ToString())
End Try
End Using
End Sub
End Class
Комментарии
Параметр path
может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.
Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.
См. также раздел
- Файловый и потоковый ввод-вывод
- Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
Open(String, FileMode)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Открывает объект FileStream по указанному пути с доступом для чтения и записи без совместного доступа.
public:
static System::IO::FileStream ^ Open(System::String ^ path, System::IO::FileMode mode);
public static System.IO.FileStream Open (string path, System.IO.FileMode mode);
static member Open : string * System.IO.FileMode -> System.IO.FileStream
Public Shared Function Open (path As String, mode As FileMode) As FileStream
Параметры
- path
- String
Открываемый файл.
- mode
- FileMode
Значение FileMode указывает, нужно ли создавать файл, если он не существует, и определяет, будет ли содержимое существующих файлов сохранено или перезаписано.
Возвращаемое значение
Поток FileStream, открытый в указанном режиме и по указанному пути с доступом для чтения и записи и без предоставления общего доступа.
Исключения
платформа .NET Framework и .NET Core версий старше 2.1: path
строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
path
имеет значение null
.
Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.
Указан недопустимый путь (например, он ведет на несопоставленный диск).
При открытии файла произошла ошибка ввода-вывода.
Параметр path
указывает файл, доступный только для чтения.
-или-
Эта операция не поддерживается на текущей платформе.
-или-
Параметрpath
определяет каталог.
-или-
У вызывающего объекта отсутствует необходимое разрешение.
-или-
mode
имеет значение Create, а указанный файл является скрытым.
mode
задает недопустимое значение.
Файл, заданный параметром path
, не найден.
Параметр path
задан в недопустимом формате.
Примеры
В следующем примере кода создается временный файл и записывается в него текст. Затем в примере открывается файл с помощью T:System.IO.FileMode.Open; то есть, если файл еще не существует, он не будет создан.
using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
// Create a temporary file, and put some data into it.
String^ path = Path::GetTempFileName();
FileStream^ fs = File::Open( path, FileMode::Open, FileAccess::Write, FileShare::None );
try
{
array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );
// Add some information to the file.
fs->Write( info, 0, info->Length );
}
finally
{
if ( fs )
delete (IDisposable^)fs;
}
// Open the stream and read it back.
fs = File::Open( path, FileMode::Open );
try
{
array<Byte>^b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding( true );
while ( fs->Read( b, 0, b->Length ) > 0 )
{
Console::WriteLine( temp->GetString( b ) );
}
}
finally
{
if ( fs )
delete (IDisposable^)fs;
}
}
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
// Create a temporary file, and put some data into it.
string path = Path.GetTempFileName();
using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None))
{
Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
// Add some information to the file.
fs.Write(info, 0, info.Length);
}
// Open the stream and read it back.
using (FileStream fs = File.Open(path, FileMode.Open))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}
}
}
open System.IO
open System.Text
// Create a temporary file, and put some data into it.
let path = Path.GetTempFileName()
do
use fs =
File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None)
let info =
UTF8Encoding(true)
.GetBytes "This is some text in the file."
// Add some information to the file.
fs.Write(info, 0, info.Length)
// Open the stream and read it back.
do
use fs = File.Open(path, FileMode.Open)
let b = Array.zeroCreate 1024
let temp = UTF8Encoding true
while fs.Read(b, 0, b.Length) > 0 do
printfn $"{temp.GetString b}"
Imports System.IO
Imports System.Text
Public Class Test
Public Shared Sub Main()
' Create a temporary file, and put some data into it.
Dim path1 As String = Path.GetTempFileName()
Using fs As FileStream = File.Open(path1, FileMode.Open, FileAccess.Write, FileShare.None)
Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
' Add some information to the file.
fs.Write(info, 0, info.Length)
End Using
' Open the stream and read it back.
Using fs As FileStream = File.Open(path1, FileMode.Open)
Dim b(1023) As Byte
Dim temp As UTF8Encoding = New UTF8Encoding(True)
Do While fs.Read(b, 0, b.Length) > 0
Console.WriteLine(temp.GetString(b))
Loop
End Using
End Sub
End Class
Комментарии
Параметр path
может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.
Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.
См. также раздел
- Файловый и потоковый ввод-вывод
- Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
Open(String, FileStreamOptions)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и совместное использование, доступом других файловых потоков к тому же файлу, размером буфера, дополнительными параметрами файла и размером выделения.
public:
static System::IO::FileStream ^ Open(System::String ^ path, System::IO::FileStreamOptions ^ options);
public static System.IO.FileStream Open (string path, System.IO.FileStreamOptions options);
static member Open : string * System.IO.FileStreamOptions -> System.IO.FileStream
Public Shared Function Open (path As String, options As FileStreamOptions) As FileStream
Параметры
- path
- String
Путь к открываемой папке.
- options
- FileStreamOptions
Объект , описывающий необязательные FileStream параметры для использования.
Возвращаемое значение
Экземпляр FileStream , который заключает открытый файл в оболочку.
Комментарии
FileStream(String, FileStreamOptions) для получения сведений об исключениях.
Применяется к
Open(String, FileMode, FileAccess)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Открывает FileStream в заданном пути с заданным режимом и доступом без совместного доступа.
public:
static System::IO::FileStream ^ Open(System::String ^ path, System::IO::FileMode mode, System::IO::FileAccess access);
public static System.IO.FileStream Open (string path, System.IO.FileMode mode, System.IO.FileAccess access);
static member Open : string * System.IO.FileMode * System.IO.FileAccess -> System.IO.FileStream
Public Shared Function Open (path As String, mode As FileMode, access As FileAccess) As FileStream
Параметры
- path
- String
Открываемый файл.
- mode
- FileMode
Значение FileMode указывает, нужно ли создавать файл, если он не существует, и определяет, будет ли содержимое существующих файлов сохранено или перезаписано.
- access
- FileAccess
Значение FileAccess, описывающее операции, которые можно выполнять с файлом.
Возвращаемое значение
Объект с монопольным доступом FileStream, обеспечивающий доступ к указанному файлу с заданным режимом и доступом.
Исключения
платформа .NET Framework и .NET Core версий старше 2.1: path
строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
-или-
access
указывает Read
, и mode
указывает Create
, CreateNew
, Truncate
или Append
.
path
имеет значение null
.
Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.
Указан недопустимый путь (например, он ведет на несопоставленный диск).
При открытии файла произошла ошибка ввода-вывода.
path
указывает файл, доступный только для чтения, а параметр access
не равен Read
.
-или-
Параметрpath
определяет каталог.
-или-
У вызывающего объекта отсутствует необходимое разрешение.
-или-
mode
имеет значение Create, а указанный файл является скрытым.
mode
или access
задает недопустимое значение.
Файл, заданный параметром path
, не найден.
Параметр path
задан в недопустимом формате.
Примеры
В следующем примере открывается файл с доступом только для чтения.
using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
// This sample assumes that you have a folder named "c:\temp" on your computer.
String^ filePath = "c:\\temp\\MyTest.txt";
// Delete the file if it exists.
if (File::Exists( filePath ))
{
File::Delete( filePath );
}
// Create the file.
FileStream^ fs = File::Create( filePath );
try
{
array<Byte>^ info = ( gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );
// Add some information to the file.
fs->Write( info, 0, info->Length );
}
finally
{
if ( fs )
delete (IDisposable^)fs;
}
// Open the stream and read it back.
fs = File::Open( filePath, FileMode::Open, FileAccess::Read );
try
{
array<Byte>^ b = gcnew array<Byte>(1024);
UTF8Encoding^ temp = gcnew UTF8Encoding( true );
while ( fs->Read( b, 0, b->Length ) > 0 )
{
Console::WriteLine( temp->GetString( b ) );
}
try
{
// Try to write to the file.
fs->Write( b, 0, b->Length );
}
catch ( Exception^ e )
{
Console::WriteLine( "Writing was disallowed, as expected: {0}", e->ToString() );
}
}
finally
{
if ( fs )
delete (IDisposable^)fs;
}
}
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
// This sample assumes that you have a folder named "c:\temp" on your computer.
string filePath = @"c:\temp\MyTest.txt";
// Delete the file if it exists.
if (File.Exists(filePath))
{
File.Delete(filePath);
}
// Create the file.
using (FileStream fs = File.Create(filePath))
{
Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
// Add some information to the file.
fs.Write(info, 0, info.Length);
}
// Open the stream and read it back.
using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
try
{
// Try to write to the file.
fs.Write(b,0,b.Length);
}
catch (Exception e)
{
Console.WriteLine("Writing was disallowed, as expected: {0}", e.ToString());
}
}
}
}
open System.IO
open System.Text
// This sample assumes that you have a folder named "c:\temp" on your computer.
let filePath = @"c:\temp\MyTest.txt"
// Delete the file if it exists.
if File.Exists filePath then
File.Delete filePath
// Create the file.
do
use fs = File.Create filePath
let info =
UTF8Encoding(true)
.GetBytes "This is some text in the file."
// Add some information to the file.
fs.Write(info, 0, info.Length)
// Open the stream and read it back.
do
use fs =
File.Open(filePath, FileMode.Open, FileAccess.Read)
let b = Array.zeroCreate 1024
let temp = UTF8Encoding true
while fs.Read(b, 0, b.Length) > 0 do
printfn $"{temp.GetString b}"
try
// Try to write to the file.
fs.Write(b, 0, b.Length)
with
| e -> printfn $"Writing was disallowed, as expected: {e}"
Imports System.IO
Imports System.Text
Public Class Test
Public Shared Sub Main()
' This sample assumes that you have a folder named "c:\temp" on your computer.
Dim filePath As String = "c:\temp\MyTest.txt"
' Delete the file if it exists.
If File.Exists(filePath) Then
File.Delete(filePath)
End If
' Create the file.
Using fs As FileStream = File.Create(filePath)
Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
' Add some information to the file.
fs.Write(info, 0, info.Length)
End Using
' Open the stream and read it back.
Using fs As FileStream = File.Open(filePath, FileMode.Open, FileAccess.Read)
Dim b(1023) As Byte
Dim temp As UTF8Encoding = New UTF8Encoding(True)
' Display the information on the console.
Do While fs.Read(b, 0, b.Length) > 0
Console.WriteLine(temp.GetString(b))
Loop
Try
' Try to write to the file
fs.Write(b, 0, b.Length)
Catch e As Exception
Console.WriteLine("Writing was disallowed, as expected: " & e.ToString())
End Try
End Using
End Sub
End Class
Комментарии
Параметр path
может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.
См. также раздел
- Файловый и потоковый ввод-вывод
- Чтение текста из файла
- Практическое руководство. Запись текста в файл