FileStream.CanWrite プロパティ

定義

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

public:
 virtual property bool CanWrite { bool get(); };
public override bool CanWrite { get; }
member this.CanWrite : bool
Public Overrides ReadOnly Property CanWrite As Boolean

プロパティ値

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

次の例では、 プロパティをCanWrite使用して、ストリームが書き込みをサポートしているかどうかをチェックします。

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

int main()
{
   String^ path = "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 = gcnew FileStream( path,FileMode::OpenOrCreate,FileAccess::Read );
   try
   {
      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 );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}
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);
            }
        }
    }
}
open System.IO

let path = @"c:\temp\MyTest.txt"

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

//Create the file.
do
    use fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)

    if fs.CanWrite then
        printfn $"The stream for file {path} is writable."

    else
        printfn $"The stream for file {path} is not writable."
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

プロパティを使用する例を次に CanWrite 示します。 このコードの出力は"MyFile.txt 書き込み可能" です。"MyFile.txt の書き込みと読み取りの両方が可能です"という出力メッセージを取得するには、コンストラクターで FileStream パラメーターを FileAccessReadWrite変更します。

using namespace System;
using namespace System::IO;
int main( void )
{
   FileStream^ fs = gcnew 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
   {
      Console::WriteLine( "MyFile.txt is writable." );
   }

   return 0;
}
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.");
        }
    }
}
open System.IO

let fs = new FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write)

if fs.CanRead && fs.CanWrite then
    printfn "MyFile.txt can be both written to and read from."
elif fs.CanWrite then
    printfn "MyFile.txt is writable."
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

注釈

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

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

適用対象

こちらもご覧ください