FileStream.CanWrite Property   
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets a value that indicates whether the current stream supports writing.
public:
 virtual property bool CanWrite { bool get(); };public override bool CanWrite { get; }member this.CanWrite : boolPublic Overrides ReadOnly Property CanWrite As BooleanProperty Value
true if the stream supports writing; false if the stream is closed or was opened with read-only access.
Examples
The following example uses the CanWrite property to check whether a stream supports writing.
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
The following is an example using the CanWrite property. The output of this code is "MyFile.txt is writable." To get the output message "MyFile.txt can be both written to and read from.", change the FileAccess parameter to ReadWrite in the FileStream constructor.
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
Remarks
If a class derived from Stream does not support writing, a call to SetLength, Write, BeginWrite, or WriteByte throws a NotSupportedException.
If the stream is closed, this property returns false.