| by Arround The Web | No comments

What is System.IO Namespace in C#

System.IO namespace provides classes that can interact with the file system and perform input and output operations in C# code. This article covers the System.IO Namespace in C# and explores some of its most used classes and methods.

Table of Contents:

What is System.IO Namespace in C#

System.IO is a namespace in the C# programming language that provides a set of classes, structures, enumerations, and delegates to handle input and output operations. These operations can be performed on various types of files, including text files, binary files, and directories.

In C#, a namespace is a container that groups related code elements together, such as classes, interfaces, enumerations, and structures. Namespaces are used to organize code, prevent naming conflicts, and make it easier to find and use code elements. The System.IO Namespace is just one of the many namespaces available in the .NET Framework Class Library.

The System.IO namespace in C# provides:

    • Classes
    • Structures
    • Enumerations
    • Delegates

Using these, we can perform input/output operations. It is a fundamental part of the .NET Framework and allows us to interact with the file system and other input/output streams.

C# System.IO Classes

The System.IO namespace in C# includes a set of classes that provide various functionalities for handling files and directories.

Namespace System.IO contains numerous important classes, including:

    • BinaryReader: It can read primitive data types from a binary stream, in a particular encoding.
    • BinaryWriter: This class allows writing primitive types as binary values to a stream, and it also provides support for writing strings in a specific encoding.
    • BufferedStream: This class provides buffering capabilities to improve the performance of read and write operations on a stream.
    • Directory: This class provides a set of static methods that enable creating, moving, and traversing directories and their subdirectories.
    • DirectoryInfo: It offers instance methods for managing directories and subdirectories, including creating, moving, and iterating through them.
    • DriveInfo: It allows us to obtain and use information about a specific drive.
    • File: The File class offers a set of static methods for performing operations on individual files such as creation, copying, deletion, moving, and opening.
    • FileInfo: It is a class that offers various properties and methods that enable the creation, copying, deletion, moving, and opening of files.
    • FileStream: This class enables reading from and writing to a file by providing a Stream that supports synchronous and asynchronous operations.
    • MemoryStream: This class generates a stream with its storage location in memory.
    • Path: The Path class provides methods to perform operations on strings that contain information about file or directory paths.
    • StreamReader: This class provides an implementation of TextReader that can read characters from a stream of bytes using a specified character encoding.
    • StreamWriter: This class allows writing characters to a stream in a particular encoding by providing a TextWriter.
    • StringReader: An implementation of a TextReader that reads strings.
    • StringWriter: It is a class that provides a TextWriter to write information to strings.

C# System.IO Structures

The System.IO namespace in C# also includes a set of structures that provide various functionalities for file and directory operations.

The System.IO namespace contains the following structure:

WaitForChangedResult: This struct contains data related to a file or directory change that has been detected by a FileSystemWatcher object. It includes information such as the name of the file or directory that was changed, the type of change that occurred, and the time at which the change was detected.

C# System.IO Enumerations

The System.IO namespace in C# includes a set of enumerations that provide various file and directory-related functionalities.

Enums in C# are user-defined data types that allow programmers to create a set of named values. The values in an enum are typically related to each other in some way, and they are used to represent a finite set of options or choices.

The System.IO namespace contains several important enumerations, including:

    • DriveType: This enum defines a set of constants that represent different types of drives, including CD-ROM, Fixed, Network, NoRootDirectory, Ram, Removable, and Unknown.
    • FileAccess: This enum includes constants for specifying read, write, or both access of file.
    • FileAttributes: It gives file attributes.
    • FileMode: This enum specifies the way in which the operating system should open a file.
    • FileOptions: This enumeration provides advanced configuration options when creating a FileStream object.
    • FileShare: This enum provides a set of constants that allow controlling the type of access that other operations can have to the same file.
    • HandleInheritability: This enum defines whether the handle underlying an object can be inherited by child processes.
    • MatchCasing: The MatchCasing enum defines the character casing to use for matching, while the MatchType enum specifies the type of wildcard matching to apply.
    • NotifyFilters: This delegate specifies the types of changes to monitor in a file or folder.
    • SearchOption: SearchOption is an enumeration that determines whether to search for files and directories in the current directory only or in the current directory and all its subdirectories.
    • SeekOrigin: This delegate specifies the point within a stream where the seeking operation should begin.
    • UnixFileMode: It is an enumeration that represents the permissions of a Unix filesystem. It enables the combination of its member values using bitwise operations.
    • WatcherChangeTypes: It enumerates the types of modifications that could take place on a file or directory.

C# System.IO Delegates

The System.IO namespace in C# includes a set of delegates that provide various functionalities for handling file and directory operations.

    • ErrorEventHandler: It is a type of delegate that specifies the method signature for handling the FileSystemWatcher object error event.
    • FileSystemEventHandler: It is a type of delegate that specifies the structure for methods that are used to handle the events related to file system changes such as Changed, Created, or Deleted, which occur in a FileSystemWatcher object.
    • RenamedEventHandler: A delegate that defines the signature for methods that handle the Renamed event of a FileSystemWatcher object.


The System.IO Namespace in C# provides classes that allow us to work with the file system and control input and output and manage file system security. The System.IO namespace in .NET Framework allows us to interact with the file system and other input/output streams. For more details on System.IO Namespace classes, structures, enumerations, and delegates, read the article.

Share Button

Source: linuxhint.com

Leave a Reply