FileStream Класс

Определение

Stream Предоставляет файл, поддерживающий синхронные и асинхронные операции чтения и записи.

public ref class FileStream : System::IO::Stream
public class FileStream : System.IO.Stream
[System.Runtime.InteropServices.ComVisible(true)]
public class FileStream : System.IO.Stream
type FileStream = class
    inherit Stream
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileStream = class
    inherit Stream
Public Class FileStream
Inherits Stream
Наследование
FileStream
Наследование
Производный
Атрибуты

Примеры

В следующем примере показаны некоторые FileStream конструкторы.

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            AddText(fs, "This is some text");
            AddText(fs, "This is some more text,");
            AddText(fs, "\r\nand this is on a new line");
            AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

            for (int i=1;i < 120;i++)
            {
                AddText(fs, Convert.ToChar(i).ToString());
            }
        }

        //Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            int readLen;
            while ((readLen = fs.Read(b,0,b.Length)) > 0)
            {
                Console.WriteLine(temp.GetString(b,0,readLen));
            }
        }
    }

    private static void AddText(FileStream fs, string value)
    {
        byte[] info = new UTF8Encoding(true).GetBytes(value);
        fs.Write(info, 0, info.Length);
    }
}
open System
open System.IO
open System.Text

let addText (fs:FileStream) (value: string) =
    let info = UTF8Encoding(true).GetBytes value
    fs.Write(info, 0, info.Length);

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

// Delete the file if it exists.
if File.Exists path then
    File.Delete path

//Create the file.
do
    use fs = File.Create path

    addText fs "This is some text"
    addText fs "This is some more text,"
    addText fs "\r\nand this is on a new line"
    addText fs "\r\n\r\nThe following is a subset of characters:\r\n"

    for i = 1 to 119 do
        Convert.ToChar i
        |> string
        |> addText fs
    
do
    //Open the stream and read it back.
    use fs = File.OpenRead path
    let b = Array.zeroCreate 1024
    let temp = UTF8Encoding true
    let mutable readLen = fs.Read(b,0,b.Length);
    while readLen> 0 do
        printfn $"{temp.GetString(b,0,readLen)}"
        readLen <- fs.Read(b,0,b.Length)
Imports System.IO
Imports System.Text

Public Class Test

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

        ' Delete the file if it exists.
        If File.Exists(path) Then
            File.Delete(path)
        End If

        'Create the file.
        Dim fs As FileStream = File.Create(path)

        AddText(fs, "This is some text")
        AddText(fs, "This is some more text,")
        AddText(fs, Environment.NewLine & "and this is on a new line")
        AddText(fs, Environment.NewLine & Environment.NewLine)
        AddText(fs, "The following is a subset of characters:" & Environment.NewLine)

        Dim i As Integer

        For i = 1 To 120
            AddText(fs, Convert.ToChar(i).ToString())

        Next

        fs.Close()

        'Open the stream and read it back.
        fs = File.OpenRead(path)
        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

        fs.Close()
    End Sub

    Private Shared Sub AddText(ByVal fs As FileStream, ByVal value As String)
        Dim info As Byte() = New UTF8Encoding(True).GetBytes(value)
        fs.Write(info, 0, info.Length)
    End Sub
End Class

В следующем примере показано, как выполнять асинхронную запись в файл. Этот код выполняется в приложении WPF с именем TextBlock с именем UserInput и кнопкой, подключенной к обработчику событий Click, который называется Button_Click. Путь к файлу необходимо изменить на файл, который существует на компьютере.

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\userinputlog.txt";

            byte[] result = uniencoding.GetBytes(UserInput.Text);

            using (FileStream SourceStream = File.Open(filename, FileMode.OpenOrCreate))
            {
                SourceStream.Seek(0, SeekOrigin.End);
                await SourceStream.WriteAsync(result, 0, result.Length);
            }
        }
    }
}
Imports System.IO
Imports System.Text

Class MainWindow
    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim uniencoding As UnicodeEncoding = New UnicodeEncoding()
        Dim filename As String = "c:\Users\exampleuser\Documents\userinputlog.txt"

        Dim result As Byte() = uniencoding.GetBytes(UserInput.Text)

        Using SourceStream As FileStream = File.Open(filename, FileMode.OpenOrCreate)
            SourceStream.Seek(0, SeekOrigin.End)
            Await SourceStream.WriteAsync(result, 0, result.Length)
        End Using
    End Sub
End Class

Комментарии

Дополнительные сведения об этом API см. в дополнительных примечаниях API для FileStream.

Конструкторы

Имя Описание
FileStream(IntPtr, FileAccess, Boolean, Int32, Boolean)
Устаревшие..
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файла с указанным разрешением на чтение и запись, владение экземпляром, FileStream размер буфера и синхронное или асинхронное состояние.

FileStream(IntPtr, FileAccess, Boolean, Int32)
Устаревшие..
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файлов с указанным разрешением на чтение и запись, FileStream владение экземпляром и размером буфера.

FileStream(IntPtr, FileAccess, Boolean)
Устаревшие..
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файлов с указанным разрешением на чтение и записью и FileStream владением экземпляром.

FileStream(IntPtr, FileAccess)
Устаревшие..
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файла с указанным разрешением на чтение и запись.

FileStream(SafeFileHandle, FileAccess, Int32, Boolean)

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файла с указанным разрешением на чтение и запись, размером буфера и синхронным или асинхронным состоянием.

FileStream(SafeFileHandle, FileAccess, Int32)

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файлов с указанным разрешением на чтение и записью и размером буфера.

FileStream(SafeFileHandle, FileAccess)

Инициализирует новый экземпляр класса для указанного FileStream дескриптора файла с указанным разрешением на чтение и запись.

FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)

Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и совместное использование, размером буфера и синхронным или асинхронным состоянием.

FileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions)

Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и общий доступ, доступ к другим файлам файлов может иметь тот же файл, размер буфера и дополнительные параметры файла.

FileStream(String, FileMode, FileAccess, FileShare, Int32)

Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и записью и общим доступом, а также размером буфера.

FileStream(String, FileMode, FileAccess, FileShare)

Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и разрешением на общий доступ.

FileStream(String, FileMode, FileAccess)

Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания и разрешением на чтение и запись.

FileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

Инициализирует новый экземпляр класса с указанным путем, режимом создания, правами доступа и разрешением общего доступа, размером буфера FileStream , дополнительными параметрами файла, контролем доступа и безопасностью аудита.

FileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)

Инициализирует новый экземпляр класса с указанным путем, режимом создания, правами доступа и разрешением на общий доступ, размером буфера FileStream и дополнительными параметрами файла.

FileStream(String, FileMode)

Инициализирует новый экземпляр FileStream класса с указанным путем и режимом создания.

FileStream(String, FileStreamOptions)

Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и совместное использование, размером буфера, дополнительными параметрами файла, размером предварительного размещения и доступом к другим Файлам может иметь тот же файл.

Свойства

Имя Описание
CanRead

Возвращает значение, указывающее, поддерживает ли текущий поток чтение.

CanSeek

Возвращает значение, указывающее, поддерживает ли текущий поток поиск.

CanTimeout

Возвращает значение, определяющее, может ли текущий поток истекает время ожидания.

(Унаследовано от Stream)
CanWrite

Возвращает значение, указывающее, поддерживает ли текущий поток запись.

Handle
Устаревшие..
Устаревшие..
Устаревшие..

Возвращает дескриптор операционной системы для файла, который инкапсулирует текущий FileStream объект.

IsAsync

Возвращает значение, указывающее, был ли FileStream открыт асинхронно или синхронно.

Length

Возвращает длину в байтах потока.

Name

Возвращает абсолютный путь к файлу, открываемого в файле FileStream.

Position

Возвращает или задает текущую позицию данного потока.

ReadTimeout

Возвращает или задает значение в миллисекундах, которое определяет, сколько времени поток попытается прочитать до истечения времени ожидания.

(Унаследовано от Stream)
SafeFileHandle

SafeFileHandle Возвращает объект, представляющий дескриптор файла операционной системы для файла, который инкапсулирует текущий FileStream объект.

WriteTimeout

Возвращает или задает значение в миллисекундах, определяющее, сколько времени поток попытается записать до истечения времени ожидания.

(Унаследовано от Stream)

Методы

Имя Описание
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает асинхронную операцию чтения. Вместо этого рекомендуется использовать ReadAsync(Byte[], Int32, Int32, CancellationToken).

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает асинхронную операцию записи. Вместо этого рекомендуется использовать WriteAsync(Byte[], Int32, Int32, CancellationToken).

Close()

Закрывает текущий поток и освобождает все ресурсы (например, сокеты и дескрипторы файлов), связанные с текущим потоком.

Close()

Закрывает текущий поток и освобождает все ресурсы (например, сокеты и дескрипторы файлов), связанные с текущим потоком. Вместо вызова этого метода убедитесь, что поток правильно удален.

(Унаследовано от Stream)
CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyTo(Stream)

Считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток с помощью указанного маркера отмены. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Асинхронно считывает байты из текущего файлового потока и записывает их в другой поток, используя указанный размер буфера и маркер отмены.

CopyToAsync(Stream, Int32, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и маркер отмены. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream)

Асинхронно считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()
Устаревшие..
Устаревшие..
Устаревшие..

Выделяет объект WaitHandle.

(Унаследовано от Stream)
Dispose()

Освобождает все ресурсы, используемые параметром Stream.

(Унаследовано от Stream)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые FileStream и при необходимости освобождает управляемые ресурсы.

DisposeAsync()

Асинхронно освобождает неуправляемые ресурсы, используемые FileStreamв .

EndRead(IAsyncResult)

Ожидает завершения ожидающей асинхронной операции чтения. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32, CancellationToken) вместо этого.)

EndWrite(IAsyncResult)

Завершает асинхронную операцию записи и блокируется до завершения операции ввода-вывода. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32, CancellationToken) вместо этого.)

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Finalize()

Гарантирует, что ресурсы освобождены и другие операции очистки выполняются, когда сборщик мусора освобождает FileStream.

Flush()

Очищает буферы для этого потока и приводит к записи в файл любых буферных данных.

Flush(Boolean)

Очищает буферы для этого потока и приводит к записи в файл любых буферных данных, а также очищает все промежуточные буферы файлов.

FlushAsync()

Асинхронно очищает все буферы для этого потока и приводит к записи всех буферных данных на базовое устройство.

(Унаследовано от Stream)
FlushAsync(CancellationToken)

Асинхронно очищает все буферы для этого потока, приводит к записи буферных данных в файл и отслеживает запросы на отмену.

GetAccessControl()

FileSecurity Возвращает объект, инкапсулирующий записи списка управления доступом (ACL) для файла, описанного текущим FileStream объектом.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
Lock(Int64, Int64)

Запрещает другим процессам чтение или запись в нее FileStream.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()
Устаревшие..

Предоставляет поддержку Contract.

(Унаследовано от Stream)
Read(Byte[], Int32, Int32)

Считывает блок байтов из потока и записывает данные в заданный буфер.

Read(Span<Byte>)

Считывает последовательность байтов из текущего потока файлов и перемещает позицию в потоке файлов по количеству байтов, считываемых.

Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока файлов и записывает их в массив байтов, начиная с указанного смещения, перемещает позицию в потоке файлов по количеству байтов, считываемых и отслеживает запросы на отмену.

ReadAsync(Byte[], Int32, Int32)

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию в потоке по числу байтов.

(Унаследовано от Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока файлов и записывает их в область памяти, перемещает позицию в потоке файлов по количеству байтов чтения и отслеживает запросы на отмену.

ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

(Унаследовано от Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Считывает по крайней мере минимальное количество байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

(Унаследовано от Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Асинхронно считывает по крайней мере минимальное количество байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

(Унаследовано от Stream)
ReadByte()

Считывает байт из файла и перемещает позицию чтения один байт.

ReadExactly(Byte[], Int32, Int32)

Считывает количество байтов из текущего потока и перемещает count положение в потоке.

(Унаследовано от Stream)
ReadExactly(Span<Byte>)

Считывает байты из текущего потока и перемещает положение в потоке, пока не будет заполнено buffer .

(Унаследовано от Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает количество байтов из текущего потока, перемещает count положение в потоке и отслеживает запросы на отмену.

(Унаследовано от Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает байты из текущего потока, перемещает положение в потоке до тех пор, пока не buffer будет заполнено, и отслеживает запросы на отмену.

(Унаследовано от Stream)
Seek(Int64, SeekOrigin)

Задает текущее положение этого потока в заданное значение.

SetAccessControl(FileSecurity)

Применяет записи списка управления доступом (ACL), описанные объектом, к файлу, описанному FileSecurity текущим FileStream объектом.

SetLength(Int64)

Задает длину этого потока заданному значению.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
Unlock(Int64, Int64)

Разрешает доступ другим процессам ко всем или части файла, который ранее был заблокирован.

Write(Byte[], Int32, Int32)

Записывает блок байтов в поток файлов.

Write(ReadOnlySpan<Byte>)

Записывает последовательность байтов из диапазона только для чтения в текущий файловый поток и перемещает текущую позицию в этом потоке файлов по количеству записанных байтов.

Write(ReadOnlySpan<Byte>)

При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

WriteAsync(Byte[], Int32, Int32)

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

(Унаследовано от Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов из области памяти в текущий файловый поток, перемещает текущую позицию в этом потоке файлов по количеству записанных байтов и отслеживает запросы на отмену.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

(Унаследовано от Stream)
WriteByte(Byte)

Записывает байт в текущую позицию в потоке файлов.

Явные реализации интерфейса

Имя Описание
IDisposable.Dispose()

Освобождает все ресурсы, используемые параметром Stream.

(Унаследовано от Stream)

Методы расширения

Имя Описание
AsInputStream(Stream)

Преобразует управляемый поток в .NET для приложений Магазина Windows в входной поток в среде выполнения Windows.

AsOutputStream(Stream)

Преобразует управляемый поток в .NET для приложений Магазина Windows в выходной поток в среде выполнения Windows.

AsRandomAccessStream(Stream)

Преобразует указанный поток в поток случайного доступа.

ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Асинхронно считывает байты из Stream указанных и записывает их в указанный PipeWriterмаркер отмены.

GetAccessControl(FileStream)

Возвращает сведения о безопасности файла.

SetAccessControl(FileStream, FileSecurity)

Изменяет атрибуты безопасности существующего файла.

Применяется к

См. также раздел