FileInfo.Open 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用各种读/写访问权限和共享特权打开文件。
重载
| Open(FileMode) | 在指定的模式中打开文件。 | 
| Open(FileStreamOptions) | 使用指定的创建模式、读/写和共享权限初始化 类的新实例 FileStream ,其他 FileStream 可以具有对相同文件、缓冲区大小、其他文件选项和分配大小的访问权限。 | 
| Open(FileMode, FileAccess) | 用读、写或读/写访问权限在指定模式下打开文件。 | 
| Open(FileMode, FileAccess, FileShare) | 用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。 | 
Open(FileMode)
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
在指定的模式中打开文件。
public:
 System::IO::FileStream ^ Open(System::IO::FileMode mode);public System.IO.FileStream Open (System.IO.FileMode mode);member this.Open : System.IO.FileMode -> System.IO.FileStreamPublic Function Open (mode As FileMode) As FileStream参数
返回
在指定模式中打开、具有读/写访问权限且不共享的文件。
例外
找不到该文件。
文件为只读或是目录。
指定的路径无效,例如位于未映射的驱动器上。
此文件已打开。
示例
以下示例打开一个文件,向文件添加一些信息,并读取该文件。
using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );
   
   // Delete the file if it exists.
   if (  !fi->Exists )
   {
      //Create the file.
      FileStream^ fs = fi->Create();
      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 = fi->Open( 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;
   }
}
//This code produces output similar to the following; 
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//
using System;
using System.IO;
using System.Text;
class Test
{
    
    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);
        // Delete the file if it exists.
        if (!fi.Exists)
        {
            //Create the file.
            using (FileStream fs = fi.Create())
            {
                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 = fi.Open(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));
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
Imports System.IO
Imports System.Text
Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fs As FileStream
        ' Delete the file if it exists.
        If fi.Exists = False Then
            'Create the file.
            fs = fi.Create()
            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)
            fs.Close()
        End If
        'Open the stream and read it back.
        fs = fi.Open(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
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following; 
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.
'
'
'
'
'
'
'
'
'
'
'
'
另请参阅
适用于
Open(FileStreamOptions)
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
使用指定的创建模式、读/写和共享权限初始化 类的新实例 FileStream ,其他 FileStream 可以具有对相同文件、缓冲区大小、其他文件选项和分配大小的访问权限。
public:
 System::IO::FileStream ^ Open(System::IO::FileStreamOptions ^ options);public System.IO.FileStream Open (System.IO.FileStreamOptions options);member this.Open : System.IO.FileStreamOptions -> System.IO.FileStreamPublic Function Open (options As FileStreamOptions) As FileStream参数
- options
- FileStreamOptions
描述要使用的可选 FileStream 参数的 对象。
返回
包装 FileStream 打开的文件的 。
注解
FileStream(String, FileStreamOptions) 有关异常的信息。
适用于
Open(FileMode, FileAccess)
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
用读、写或读/写访问权限在指定模式下打开文件。
public:
 System::IO::FileStream ^ Open(System::IO::FileMode mode, System::IO::FileAccess access);public System.IO.FileStream Open (System.IO.FileMode mode, System.IO.FileAccess access);member this.Open : System.IO.FileMode * System.IO.FileAccess -> System.IO.FileStreamPublic Function Open (mode As FileMode, access As FileAccess) As FileStream参数
- access
- FileAccess
一个 FileAccess 常数,它指定是使用 Read、Write 还是 ReadWrite 文件访问来打开文件。
返回
用指定模式和访问权限打开的且不共享的 FileStream 对象。
例外
调用方没有所要求的权限。
找不到该文件。
Name 为只读或是目录。
指定的路径无效,例如位于未映射的驱动器上。
此文件已打开。
Name 为空,或者只包含空白。
一个或多个参数为 NULL。
示例
以下示例以只读的形式打开一个文件,并从该文件中读取。
using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );
   
   // Delete the file if it exists.
   if (  !fi->Exists )
   {
      
      //Create the file.
      FileStream^ fs = fi->Create();
      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 = fi->Open( 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 );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}
//This code produces output similar to the following; 
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//Writing was disallowed, as expected: System.NotSupportedException: Stream does 
//not support writing.
//   at System.IO.__Error.WriteNotSupported()
//   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
//   at main() in c:\documents and settings\MyComputer\my documents\
//visual studio 2005\projects\finfo open2\finfo open2\
//cpp_console_application.cpp:line 46
using System;
using System.IO;
using System.Text;
class Test
{
    
    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);
        // Delete the file if it exists.
        if (!fi.Exists)
        {
            //Create the file.
            using (FileStream fs = fi.Create())
            {
                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 = fi.Open(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());
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//Writing was disallowed, as expected: System.NotSupportedException: Stream does
//not support writing.
//   at System.IO.__Error.WriteNotSupported()
//   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
//   at Test.Main() in C:\Documents and Settings\My Computer\My Documents\
//Visual Studio 2005\Projects\finfo open2\finfo open2\Program.cs:line 39
imports System.IO
imports System.Text
Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\MyTest.txt"
        Dim fi As FileInfo = new FileInfo(path)
        Dim fs As FileStream
        ' Delete the file if it exists.
        If fi.Exists = False
            'Create the file.
            fs = fi.Create()
            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)
            fs.Close()
        End If
        'Open the stream and read it back.
        fs = fi.Open(FileMode.Open, FileAccess.Read)
        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
                fs.Write(b,0,b.Length)
                Catch e As Exception
                Console.WriteLine("Writing was disallowed, as expected: {0}", e.ToString())
            End Try
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following; 
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.
'
'
'
'
'
'
'
'
'
'
'
'
'Writing was disallowed, as expected: System.NotSupportedException: Stream does 
'not support writing.
'   at System.IO.__Error.WriteNotSupported()
'   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
'   at VB_Console_Application.Test.Main() in C:\Documents and Settings\MyComputer
'\My Documents\Visual Studio 2005\Projects\finfo open2\finfo open2\Module1.vb:line 34
'
另请参阅
适用于
Open(FileMode, FileAccess, FileShare)
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
- Source:
- FileInfo.cs
用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。
public:
 System::IO::FileStream ^ Open(System::IO::FileMode mode, System::IO::FileAccess access, System::IO::FileShare share);public System.IO.FileStream Open (System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share);member this.Open : System.IO.FileMode * System.IO.FileAccess * System.IO.FileShare -> System.IO.FileStreamPublic Function Open (mode As FileMode, access As FileAccess, share As FileShare) As FileStream参数
- access
- FileAccess
一个 FileAccess 常数,它指定是使用 Read、Write 还是 ReadWrite 文件访问来打开文件。
返回
用指定的模式、访问权限和共享选项打开的 FileStream 对象。
例外
调用方没有所要求的权限。
找不到该文件。
Name 为只读或是目录。
指定的路径无效,例如位于未映射的驱动器上。
此文件已打开。
Name 为空,或者只包含空白。
一个或多个参数为 NULL。
示例
以下示例演示如何打开文件进行读取和写入,但不允许访问其他用户或进程。
using namespace System;
using namespace System::IO;
int main()
{
   
   // Open an existing file, or create a new one.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );
   
   // Open the file just specified such that no one else can use it.
   FileStream^ fs = fi->Open( FileMode::OpenOrCreate, FileAccess::ReadWrite, FileShare::None );
   
   // Create another reference to the same file.
   FileInfo^ nextfi = gcnew FileInfo( "temp.txt" );
   try
   {
      
      // Try opening the same file, which was locked by the previous process.
      nextfi->Open( FileMode::OpenOrCreate, FileAccess::Read );
      Console::WriteLine( "The file was not locked, and was opened by a second process." );
   }
   catch ( IOException^ ) 
   {
      Console::WriteLine( "The file could not be opened because it was locked by another process." );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e );
   }
   
   // Close the file so it can be deleted.
   fs->Close();
}
//This code produces output similar to the following; 
//results may vary based on the computer/file structure/etc.:
//
//The file could not be opened because it was locked by another process.
using System;
using System.IO;
public class OpenTest
{
    public static void Main()
    {
        // Open an existing file, or create a new one.
        FileInfo fi = new FileInfo("temp.txt");
        // Open the file just specified such that no one else can use it.
        FileStream fs = fi.Open( FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None );
        // Create another reference to the same file.
        FileInfo nextfi = new FileInfo("temp.txt");
        try
        {
            // Try opening the same file, which was locked by the previous process.
            nextfi.Open( FileMode.OpenOrCreate, FileAccess.Read );
            Console.WriteLine("The file was not locked, and was opened by a second process.");
        }
        catch (IOException)
        {
            Console.WriteLine("The file could not be opened because it was locked by another process.");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        // Close the file so it can be deleted.
        fs.Close();
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The file could not be opened because it was locked by another process.
Imports System.IO
Public Class OpenTest
    Public Shared Sub Main()
        ' Open an existing file, or create a new one.
        Dim fi As New FileInfo("temp.txt")
        ' Open the file just specified such that no one else can use it.
        Dim fs As FileStream = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)
        ' Create another reference to the same file.
        Dim nextfi As New FileInfo("temp.txt")
        Try
            ' Try opening the same file, which was locked by the previous process.
            nextfi.Open(FileMode.OpenOrCreate, FileAccess.Read)
            Console.WriteLine("The file was not locked, and was opened by a second process.")
        Catch i as IOException
            Console.WriteLine(i.ToString())
        Catch e As Exception
            Console.WriteLine(e.ToString())
        End Try
        ' Close the file so it can be deleted.
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following; 
'results may vary based on the computer/file structure/etc.:
'
'System.IO.IOException: The process cannot access the file 
''C:\Documents and Settings\mydirectory\My Documents\Visual Studio 2005
'\Projects\fileinfoopen\fileinfoopen\obj\Release\temp.txt' 
'because it is being used by another process.
'at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
'at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, 
'Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions
'options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
'at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,
'FileShare share) at System.IO.FileInfo.Open(FileMode mode, FileAccess access)
'at VB_Console_Application.OpenTest.Main() in C:\Documents and Settings
'\mydirectory\My Documents\Visual Studio 2005\Projects\VB_Console_Application
'\VB_Console_Application\Module1.vb:line 19