Home
C#
Path.GetExtension Example
Updated May 5, 2022
Dot Net Perls
Path.GetExtension. Most file names have a specific extension. You can use Path.GetExtension in C# to test extensions. The method includes the separator character "."
Path
Path.ChangeExtension
Method notes. We can use this method and also compare its performance to a simpler but custom method. Path methods can cause unneeded processing in some programs.
Example. We look at the functionality of the Path.GetExtension method. This code extracts the extension. The resulting extension includes the separator character, which is a dot.
Note This code is not clear in several ways. First you have to know that the extension will have the dot at the start.
Also You need to know whether the extension will be case sensitive—it is. The extension for "Test.txt" has 4 chars.
using System; using System.IO; class Program { static void Main() { string p = @"C:\Users\Sam\Documents\Test.txt"; string e = Path.GetExtension(p); if (e == ".txt") { Console.WriteLine(e); } } }
.txt
Example 2. Here we see an alternative method to check the file extensions. Often you can rewrite the framework methods so that your code does far less internally, and is also clearer to read.
Tip You can pull all the logic into a static helper method. This makes the code clearer and faster.
static
Detail This tests the path for null. You cannot use an instance method without an instance, so testing for null avoids exceptions here.
Detail IsTxtFile calls EndsWith to test the file extension. Your file extension is at the end of the path.
Detail What I like the most about this example is that it has a more natural-language, simpler interface.
using System; class Program { static void Main() { string p = @"C:\Users\Sam\Documents\Test.txt"; if (IsTxtFile(p)) { Console.WriteLine(".txt"); } } static bool IsTxtFile(string f) { return f != null && f.EndsWith(".txt", StringComparison.Ordinal); } }
.txt
Path.GetExtension: 1322 ms Custom IsTxtFile method: 326 ms [faster] Path.GetExtension: 1296 ms Custom IsTxtFile method: 208 ms [faster]
Discussion. Most developers first turn to Path.GetExtension, but it can cause code to become more complicated. Path.GetExtension has several logic checks.
Info Path.GetExtension checks the entire path for invalid chars. This step is redundant if you already know your path is valid.
Also It looks for a separator char. The implementation checks for DirectorySeparatorChar, AltDirectorySeparatorChar and VolumeSeparatorChar.
A summary. We looked at ways you can check file extensions. The custom method here involves less file system code. It separates the implementation from the expression you want to test.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on May 5, 2022 (edit link).
Home
Changes
© 2007-2025 Sam Allen