File.Open メソッド

定義

指定したパスの FileStream を開きます。

オーバーロード

名前 説明
Open(String, FileMode)

共有なしで読み取り/書き込みアクセス権を持つ指定したパスの FileStream を開きます。

Open(String, FileMode, FileAccess)

指定したモードで指定したパス上の FileStream を開き、共有なしでアクセスします。

Open(String, FileMode, FileAccess, FileShare)

指定したモードで、読み取り、書き込み、または読み取り/書き込みアクセス権を持ち、指定した共有オプションを使用して、指定したパスの FileStream を開きます。

Open(String, FileMode)

共有なしで読み取り/書き込みアクセス権を持つ指定したパスの 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指定されたモードとパスで開き、読み取り/書き込みアクセス権を持ち、共有されません。

例外

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。

pathnullです。

指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。

指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。

ファイルを開くときに I/O エラーが発生しました。

path は、読み取り専用のファイルを指定しました。

-または-

この操作は、現在のプラットフォームではサポートされていません。

-または-

path はディレクトリを指定しました。

-または-

呼び出し元に必要なアクセス許可がありません。

-または-

modeCreate され、指定されたファイルが隠しファイルです。

mode が無効な値を指定しました。

pathで指定されたファイルが見つかりませんでした。

path が無効な形式です。

次のコード例では、一時ファイルを作成し、それにテキストを書き込みます。 次に、T:System.IO.FileMode.Open を使用してファイルを開きます。つまり、ファイルがまだ存在していない場合は作成されません。

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を参照してください。

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

こちらもご覧ください

適用対象

Open(String, FileMode, FileAccess)

指定したモードで指定したパス上の 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

例外

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。

-または-

access 指定した Readmode 指定された CreateCreateNewTruncate、または Append

pathnullです。

指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。

指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。

ファイルを開くときに I/O エラーが発生しました。

path は、読み取り専用で、 accessReadされていないファイルを指定しました。

-または-

path はディレクトリを指定しました。

-または-

呼び出し元に必要なアクセス許可がありません。

-または-

modeCreate され、指定されたファイルが隠しファイルです。

mode または access 無効な値を指定しました。

pathで指定されたファイルが見つかりませんでした。

path が無効な形式です。

次の例では、読み取り専用アクセス権を持つファイルを開きます。

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を参照してください。

こちらもご覧ください

適用対象

Open(String, FileMode, FileAccess, FileShare)

指定したモードで、読み取り、書き込み、または読み取り/書き込みアクセス権を持ち、指定した共有オプションを使用して、指定したパスの 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 値。

share
FileShare

他のスレッドがファイルに対して持つアクセスの種類を指定する FileShare 値。

返品

指定したパス上の FileStream 。読み取り、書き込み、または読み取り/書き込みアクセス権を持つ指定されたモードと、指定した共有オプションを持つ。

例外

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。

-または-

access 指定した Readmode 指定された CreateCreateNewTruncate、または Append

pathnullです。

指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。

指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。

ファイルを開くときに I/O エラーが発生しました。

path は、読み取り専用で、 accessReadされていないファイルを指定しました。

-または-

path はディレクトリを指定しました。

-または-

呼び出し元に必要なアクセス許可がありません。

-または-

modeCreate され、指定されたファイルが隠しファイルです。

modeaccess、または無効な値を指定 share

pathで指定されたファイルが見つかりませんでした。

path が無効な形式です。

次の例では、読み取り専用アクセスとファイル共有が許可されていないファイルを開きます。

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を参照してください。

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

こちらもご覧ください

適用対象