# System.IO ``` diff namespace System.IO { public class BinaryReader : IDisposable { + public virtual int Read(Span buffer); + public virtual int Read(Span buffer); } public class BinaryWriter : IDisposable { + public virtual void Write(ReadOnlySpan buffer); + public virtual void Write(ReadOnlySpan chars); } public static class Directory { + public static IEnumerable EnumerateDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions); + public static IEnumerable EnumerateFiles(string path, string searchPattern, EnumerationOptions enumerationOptions); + public static IEnumerable EnumerateFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions); + public static string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions); + public static string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions); + public static string[] GetFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions); } public sealed class DirectoryInfo : FileSystemInfo { + public IEnumerable EnumerateDirectories(string searchPattern, EnumerationOptions enumerationOptions); + public IEnumerable EnumerateFiles(string searchPattern, EnumerationOptions enumerationOptions); + public IEnumerable EnumerateFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions); + public DirectoryInfo[] GetDirectories(string searchPattern, EnumerationOptions enumerationOptions); + public FileInfo[] GetFiles(string searchPattern, EnumerationOptions enumerationOptions); + public FileSystemInfo[] GetFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions); } + public class EnumerationOptions { + public EnumerationOptions(); + public FileAttributes AttributesToSkip { get; set; } + public int BufferSize { get; set; } + public bool IgnoreInaccessible { get; set; } + public MatchCasing MatchCasing { get; set; } + public MatchType MatchType { get; set; } + public bool RecurseSubdirectories { get; set; } + public bool ReturnSpecialDirectories { get; set; } + } public class FileStream : Stream { - public string Name { get; } + public virtual string Name { get; } - public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state); + public override IAsyncResult BeginRead(byte[] array, int offset, int numBytes, AsyncCallback callback, object state); - public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state); + public override IAsyncResult BeginWrite(byte[] array, int offset, int numBytes, AsyncCallback callback, object state); } + public enum MatchCasing { + CaseInsensitive = 2, + CaseSensitive = 1, + PlatformDefault = 0, + } + public enum MatchType { + Simple = 0, + Win32 = 1, + } public class MemoryStream : Stream { + public override int Read(Span destination); + public override ValueTask ReadAsync(Memory destination, CancellationToken cancellationToken = default(CancellationToken)); + public override void Write(ReadOnlySpan source); + public override ValueTask WriteAsync(ReadOnlyMemory source, CancellationToken cancellationToken = default(CancellationToken)); } public static class Path { + public static ReadOnlySpan GetDirectoryName(ReadOnlySpan path); + public static ReadOnlySpan GetExtension(ReadOnlySpan path); + public static ReadOnlySpan GetFileName(ReadOnlySpan path); + public static ReadOnlySpan GetFileNameWithoutExtension(ReadOnlySpan path); + public static string GetFullPath(string path, string basePath); + public static ReadOnlySpan GetPathRoot(ReadOnlySpan path); + public static bool HasExtension(ReadOnlySpan path); + public static bool IsPathFullyQualified(ReadOnlySpan path); + public static bool IsPathFullyQualified(string path); + public static bool IsPathRooted(ReadOnlySpan path); + public static string Join(ReadOnlySpan path1, ReadOnlySpan path2); + public static string Join(ReadOnlySpan path1, ReadOnlySpan path2, ReadOnlySpan path3); + public static bool TryJoin(ReadOnlySpan path1, ReadOnlySpan path2, ReadOnlySpan path3, Span destination, out int charsWritten); + public static bool TryJoin(ReadOnlySpan path1, ReadOnlySpan path2, Span destination, out int charsWritten); } public abstract class Stream : MarshalByRefObject, IDisposable { + public Task CopyToAsync(Stream destination, CancellationToken cancellationToken); + public virtual int Read(Span buffer); + public virtual ValueTask ReadAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public virtual void Write(ReadOnlySpan buffer); + public virtual ValueTask WriteAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public class StreamReader : TextReader { + public override int Read(Span buffer); + public override ValueTask ReadAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public override int ReadBlock(Span buffer); + public override ValueTask ReadBlockAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public class StreamWriter : TextWriter { + public override void Write(ReadOnlySpan buffer); + public override Task WriteAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public override void WriteLine(ReadOnlySpan buffer); + public override void WriteLine(string value); + public override Task WriteLineAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public class StringReader : TextReader { + public override int Read(Span buffer); + public override ValueTask ReadAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public override int ReadBlock(Span buffer); + public override ValueTask ReadBlockAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public class StringWriter : TextWriter { + public override void Write(ReadOnlySpan buffer); + public override Task WriteAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public override void WriteLine(ReadOnlySpan buffer); + public override Task WriteLineAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public abstract class TextReader : MarshalByRefObject, IDisposable { + public virtual int Read(Span buffer); + public virtual ValueTask ReadAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public virtual int ReadBlock(Span buffer); + public virtual ValueTask ReadBlockAsync(Memory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public abstract class TextWriter : MarshalByRefObject, IDisposable { + public virtual void Write(ReadOnlySpan buffer); + public virtual Task WriteAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); + public virtual void WriteLine(ReadOnlySpan buffer); + public virtual Task WriteLineAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default(CancellationToken)); } public class UnmanagedMemoryStream : Stream { + public override int Read(Span destination); + public override void Write(ReadOnlySpan source); } } ```