次の方法で共有


FileInfo.Open メソッド (FileMode, FileAccess)

読み取り可、書き込み可、または読み書き込み可などのアクセス権を指定し、指定したモードでファイルを開きます。

Overloads Public Function Open( _
   ByVal mode As FileMode, _   ByVal access As FileAccess _) As FileStream
[C#]
public FileStream Open(FileModemode,FileAccessaccess);
[C++]
public: FileStream* Open(FileModemode,FileAccessaccess);
[JScript]
public function Open(
   mode : FileMode,access : FileAccess) : FileStream;

パラメータ

  • mode
    ファイルを開くときのモード (Open または Append など) を指定する FileMode 定数。
  • access
    ファイルを ReadWrite 、または ReadWrite のいずれのアクセス権で開くかを指定する FileAccess 定数。

戻り値

指定したモードとアクセス権、および非共有の権限で開く FileStream オブジェクト。

例外

例外の種類 条件
SecurityException 呼び出し元に、必要なアクセス許可がありません。
ArgumentException path が空か、空白文字だけを含んでいます。
FileNotFoundException ファイルが見つかりません。
ArgumentNullException 1 つ以上の引数が null 参照 (Visual Basic では Nothing) です。
UnauthorizedAccessException path が読み取り専用か、またはディレクトリです。
DirectoryNotFoundException 割り当てられていないドライブであるなど、指定されたパスが無効です。
IOException ファイルが既に開いています。

解説

このメソッドの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
テキストをファイルに追加する。 ログ ファイルのオープンと追加

File.AppendText

FileInfo.AppendText

ファイルの名前を変更、またはファイルを移動する。 File.Move

FileInfo.MoveTo

ファイルをコピーする。 File.Copy

FileInfo.CopyTo

ファイルのサイズを取得する。 FileInfo.Length
ファイルの属性を取得する。 File.GetAttributes
ファイルの属性を設定する。 File.SetAttributes
ファイルが存在するかどうかを判別する。 File.Exists
バイナリ ファイルから読み取る。 新しく作成したデータ ファイルの読み取りと書き込み
バイナリ ファイルに書き込む。 新しく作成したデータ ファイルの読み取りと書き込み
ディレクトリを作成する。 CreateDirectory

Directory

使用例

[Visual Basic, C#, C++] ファイルを読み取り専用として開き、そのファイルから読み取る例を次に示します。

 
imports System
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
            '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(1024) 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

[C#] 
using System;
using System.IO;
using System.Text;

class Test 
{
    
    public static void Main() 
    {
        string path = @"c:\temp\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());
            }
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main() {
    String* path = S"c:\\temp\\MyTest.txt";
    FileInfo* fi = new FileInfo(path);

    // Delete the file if it exists.
    if (!fi->Exists) {
        //Create the file.
        FileStream* fs = fi->Create();
        try {
            Byte info[] = (new UTF8Encoding(true))->GetBytes(S"This is some text in the file.");
            //Add some information to the file.
            fs->Write(info, 0, info->Length);
        } __finally {
            if (fs) __try_cast<IDisposable*>(fs)->Dispose();
        }
    }

    //Open the stream and read it back.
    FileStream* fs = fi->Open(FileMode::Open, FileAccess::Read);
    try {
        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(S"Writing was disallowed, as expected: {0}", e);
        }
    } __finally {
        if (fs) __try_cast<IDisposable*>(fs)->Dispose();
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

.NET Framework セキュリティ:

参照

FileInfo クラス | FileInfo メンバ | System.IO 名前空間 | FileInfo.Open オーバーロードの一覧 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み