TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# Directory Type

Use the Directory type. This class contains many methods that interact with the file system.
Directory, System.IO. The Directory type is found in System.IO. It provides methods that interact with the file system's concept of folders.File
With this class, we create directories, get file lists from directories, test directories for existence, and delete directories. Directory is often used with Path.Directory.GetFilesPath
EnumerateFiles. Many methods on the Directory type are available. We call them as static methods: to call EnumerateFiles, we can use Directory.EnumerateFiles.Static

Note: For this method, we receive one path string at a time. EnumerateFiles returns an IEnumerable collection.

And: With a foreach-loop, we can get each string one at a time. If there are many files, this can avoid a large array creation.

IEnumerableForeach
C# program that uses EnumerateFiles using System; using System.IO; class Program { static void Main() { // Returns an IEnumerable<string>. foreach (string path in Directory.EnumerateFiles("C:\\")) { Console.WriteLine(path); } } }
Exists. If you want to be certain that a directory exists, use the Directory.Exists method. A directory could be moved or deleted at any time. So code must still handle exceptions.

Tip: The Directory.Exists method can be accessed most easily if you add using System.IO to the top of your program.

Tip 2: The method returns a bool: true if the directory is present, and false if it is not.

Bool MethodTrue, False
C# program that uses Directory.Exists using System; using System.IO; class Program { static void Main() { if (Directory.Exists("C:\\Users")) { Console.WriteLine("Users"); } if (Directory.Exists("C:\\Losers")) { Console.WriteLine("Losers"); } } } Output Users
DirectoryInfo. The DirectoryInfo is another way of accessing the Directory type functionality. We access important properties and methods on a DirectoryInfo.

Tip: We create DirectoryInfo by passing a directory path to its constructor. DirectoryInfo is a class.

Next: This program gets the name of the directory from DirectoryInfo, and then gets the file count for the directory.

C# program that uses DirectoryInfo using System; using System.IO; class Program { static void Main() { // Get info. DirectoryInfo info = new DirectoryInfo(@"C:\Codex\"); // Write name. Console.WriteLine(info.Name); // Write file count. FileInfo[] array = info.GetFiles(); Console.WriteLine(array.Length); } } Output Codex 5
Benchmark, EnumerateFiles. I tested the Directory.EnumerateFiles method against GetFiles(). I tested a directory with just 31 files.Array

Version 1: This version of the code uses EnumerateFiles to loop over all the file names in the directory. It does not create an array.

Version 2: This version uses GetFiles, and it creates a local array of string file names.

Benchmark

Result: It is usually acceptable to use GetFiles. The temporary array does not tend to cause many problems.

C# program that times Directory.EnumerateFiles using System; using System.Diagnostics; using System.IO; class Program { const int _max = 1000; static void Main() { var s1 = Stopwatch.StartNew(); // Version 1: use EnumerateFiles. for (int i = 0; i < _max; i++) { foreach (string path in Directory.EnumerateFiles("C:\\")) { } } s1.Stop(); var s2 = Stopwatch.StartNew(); // Version 2: use GetFiles. for (int i = 0; i < _max; i++) { string[] paths = Directory.GetFiles("C:\\"); foreach (string path in paths) { } } s2.Stop(); Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); } } Output 69516.30 ns EnumerateFiles 69568.30 ns GetFiles
CreateDirectory. The Directory class helpfully provides support for creating a new directory. The CreateDirectory method makes new folders.CreateDirectory
Size. There are many ways to sum the total size of a directory. With one approach, we call GetFiles and loop through all the file names. We use the FileInfo type on each file name.FileInfo LengthDirectory Size
Exception. One exception that can be thrown is DirectoryNotFoundException. If you call Directory.GetFiles, and the Directory does not exist, this exception will be provoked.IOException
GetDirectoryName. The Path type provides a GetDirectoryName method. This receives a string argument and returns the directory part of that path string.Path.GetDirectoryName
DriveInfo. A drive is a physical directory on your computer. The C drive is often the main hard drive on a Windows computer. DriveInfo helps us handle drives.DriveInfo
Windows. In Windows Forms, the FolderBrowserDialog provides a window that displays folder hierarchies. This avoids the need for custom code.FolderBrowserDialog

Also: The OpenFileDialog allows users to browse directories and open files, not just other folders.

OpenFileDialog
FileSystemWatcher. We can use the FileSystemWatcher type to get notifications when a file changes in a directory. Then, we can update our memory model of the file system.FileSystemWatcher

Tip: This makes it possible to access the file system only when needed. It makes using a cache of file names more effective.

A summary. For interacting with the file system and using folders, the Directory type is helpful. Other types, such as Path, help with directory-handling code.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf