語言

FileInfo.Open 方法

定義

開啟一個具有多種讀寫與分享權限的檔案。

多載

名稱 Description
Open(FileMode)

以指定的模式開啟檔案。

Open(FileStreamOptions)

初始化一個新的類別實例 FileStream ,並具備指定的建立模式、讀寫及共享權限,以及其他 FileStream 對同一檔案的存取權限、緩衝區大小、額外檔案選項及配置大小。

Open(FileMode, FileAccess)

以指定的模式開啟具有讀取、寫入或讀取/寫入存取權的檔案。

Open(FileMode, FileAccess, FileShare)

以指定模式開啟具有讀取、寫入或讀取/寫入存取權和指定共用選項的檔案。

Open(FileMode)

來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
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.FileStream
Public Function Open (mode As FileMode) As FileStream

參數

mode
FileMode

一個 FileMode 常數,指定開啟檔案的模式(例如, Open 或 Append)。

傳回

檔案以指定模式開啟,具備讀寫權限且非共享。

例外狀況

找不到該檔案。

該檔案為唯讀或為目錄。

指定的路徑無效,例如位於未對應的磁碟驅動器上。

檔案已經開啟了。

範例

以下範例打開一個檔案,為檔案加入一些資訊,然後讀取該檔案。

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)

來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
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.FileStream
Public Function Open (options As FileStreamOptions) As FileStream

參數

options
FileStreamOptions

一個描述可選 FileStream 參數的物件。

傳回

FileStream A,會包裹打開的檔案。

備註

FileStream(String, FileStreamOptions) 關於例外情況的資訊。

適用於

Open(FileMode, FileAccess)

來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
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.FileStream
Public Function Open (mode As FileMode, access As FileAccess) As FileStream

參數

mode
FileMode

一個 FileMode 常數,指定開啟檔案的模式(例如, Open 或 Append)。

access
FileAccess

一個FileAccess常數,指定是否開啟檔案,使用、ReadWrite或ReadWrite檔案存取。

傳回

物件以 FileStream 指定模式和存取方式開啟,且未共享。

例外狀況

來電者沒有所需的權限。

找不到該檔案。

Name 是唯讀或是目錄。

指定的路徑無效,例如位於未對應的磁碟驅動器上。

檔案已經開啟了。

Name 為空或僅包含空白。

一個或多個參數為空。

範例

以下範例以唯讀開啟檔案並從該檔案讀取。

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)

來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
FileInfo.cs
來源:
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.FileStream
Public Function Open (mode As FileMode, access As FileAccess, share As FileShare) As FileStream

參數

mode
FileMode

一個 FileMode 常數,指定開啟檔案的模式(例如, Open 或 Append)。

access
FileAccess

一個FileAccess常數,指定是否開啟檔案,使用、ReadWrite或ReadWrite檔案存取。

share
FileShare

一個 FileShare 常數,指定其他 FileStream 物件對此檔案的存取類型。

傳回

FileStream物件以指定的模式、存取與分享選項開啟。

例外狀況

來電者沒有所需的權限。

找不到該檔案。

Name 是唯讀或是目錄。

指定的路徑無效,例如位於未對應的磁碟驅動器上。

檔案已經開啟了。

Name 為空或僅包含空白。

一個或多個參數為空。

範例

以下範例示範開啟檔案進行讀寫,但不允許存取其他使用者或程序。

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

另請參閱

適用於