次の方法で共有


FileStream.CanWrite プロパティ

現在のストリームが書き込みをサポートしているかどうかを示す値を取得します。

Overrides Public ReadOnly Property CanWrite As Boolean
[C#]
public override bool CanWrite {get;}
[C++]
public: __property bool get_CanWrite();
[JScript]
public override function get CanWrite() : Boolean;

プロパティ値

ストリームが書き込みをサポートしている場合は true 。ストリームが閉じているか、読み取り専用アクセスで開かれた場合は false

解説

Stream から派生したクラスが書き込みをサポートしていない場合に、 SetLengthWriteBeginWrite 、または WriteByte を呼び出すと、 NotSupportedException がスローされます。

ストリームが閉じている場合、このプロパティは false を返します。

使用例

CanWrite プロパティを使用して、ストリームが書き込みをサポートしているかどうかを確認する例を次に示します。

 
Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        'Ensure that the file is readonly.
        File.SetAttributes(path, File.GetAttributes(path) Or FileAttributes.ReadOnly)

        'Create the file.
        Dim fs As FileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)

        If fs.CanWrite Then
            Console.WriteLine("The stream connected to {0} is writable.", path)
        Else
            Console.WriteLine("The stream connected to {0} is not writable.", path)
        End If
        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";

        // Ensure that the file is readonly.
        File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);

        //Create the file.
        using (FileStream fs = new FileStream (path, FileMode.OpenOrCreate, FileAccess.Read)) 
        {
            if (fs.CanWrite) 
            {
                Console.WriteLine("The stream for file {0} is writable.", path);
            } 
            else 
            {
                Console.WriteLine("The stream for file {0} is not writable.", path);
            }
        }
    }
}

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

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

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

    // Ensure that the file is readonly.
    File::SetAttributes(path, static_cast<FileAttributes>(File::GetAttributes(path) | FileAttributes::ReadOnly));

    //Create the file.
    FileStream* fs = new FileStream (path, FileMode::OpenOrCreate, FileAccess::Read);
    try {
        if (fs->CanWrite) {
            Console::WriteLine(S"The stream for file {0} is writable.", path);
        } else {
            Console::WriteLine(S"The stream for file {0} is not writable.", path);
        }
    } __finally {
        if (fs) __try_cast<IDisposable*>(fs)->Dispose();
    }
}

CanWrite プロパティの使用例を次に示します。このコードの出力は "MyFile.txt is writable." となります。 FileStream コンストラクタの FileAccess パラメータを ReadWrite に変更すると、"MyFile.txt can be both written to and read from." というメッセージが出力されます。

 
Imports System
Imports System.IO

Class TestRW
    Public Shared Sub Main()
        Dim fs As New FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write)

        If fs.CanRead And fs.CanWrite Then
            Console.WriteLine("MyFile.txt can be both written to and read from.")
        ElseIf fs.CanWrite Then
            Console.WriteLine("MyFile.txt is writable.")
        End If
    End Sub
End Class

[C#] 
using System;
using System.IO;
 
class TestRW 
{
    public static void Main(String[] args)
    {
        FileStream fs = new FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write);
        if (fs.CanRead && fs.CanWrite)
        {
            Console.WriteLine("MyFile.txt can be both written to and read from.");
        }
        else if (fs.CanWrite)
        {
            Console.WriteLine("MyFile.txt is writable.");
        }
    }
}

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

using namespace System;
using namespace System::IO;

int main(void)
    {
        FileStream * fs = new FileStream(S"MyFile.txt", FileMode::OpenOrCreate, FileAccess::Write);
    if ( fs->CanRead && fs->CanWrite )
    {
        Console::WriteLine(S"MyFile.txt can be both written to and read from.");
    } 
        else 
        {
        Console::WriteLine(S"MyFile.txt is writable.");
    }
    return 0;
}

[JScript] 
import System;
import System.IO;

class TestRW 
{
   public static function Main() : void 
   {
       var fs : FileStream = new FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write);
       if (fs.CanRead && fs.CanWrite)
           Console.WriteLine("MyFile.txt can be both written to and read from.");
       else if (fs.CanWrite)
           Console.WriteLine("MyFile.txt is writable.");
    }
}
TestRW.Main();

必要条件

プラットフォーム: 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, Common Language Infrastructure (CLI) Standard

参照

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