[C#] Getting Directory Names, Extensions, and Other Components from a File Path

When you want to extract specific parts from a file path string (e.g., C:\MyData\report.pdf), such as “just the file name,” “the extension,” or “the parent folder path,” performing string manipulation (using Substring or IndexOf) can often lead to bugs.

The System.IO.Path class provides static methods to extract these components safely and accurately.

目次

Table of Contents

  • Implementation Example of Path Parsing
  • Sample Code
  • Execution Result
  • Explanation and Technical Points
    1. Processing as Strings
    2. Path.GetDirectoryName
    3. Path.GetExtension
    4. Platform Differences

Implementation Example of Path Parsing

In the following sample code, I assume a Windows-style absolute path and break it down to retrieve the folder path, file name, extension, and other parts.

Sample Code

using System;
using System.IO;

public class Program
{
    public static void Main()
    {
        // Full path to analyze (Windows style example)
        // Note: The file does not need to actually exist; it parses the string logic.
        string filePath = @"D:\Projects\Design\Assets\logo_v2.png";

        Console.WriteLine($"Original Path: {filePath}\n");

        Console.WriteLine("--- Analysis Results ---");

        // 1. Get Directory Name (Path to the parent folder)
        // Return value: D:\Projects\Design\Assets
        string directory = Path.GetDirectoryName(filePath);
        Console.WriteLine($"Directory Name : {directory}");

        // 2. Get File Name (with extension)
        // Return value: logo_v2.png
        string fileName = Path.GetFileName(filePath);
        Console.WriteLine($"File Name      : {fileName}");

        // 3. Get File Name (without extension)
        // Return value: logo_v2
        string fileNameNoExt = Path.GetFileNameWithoutExtension(filePath);
        Console.WriteLine($"No Ext Name    : {fileNameNoExt}");

        // 4. Get Extension (including the dot)
        // Return value: .png
        string extension = Path.GetExtension(filePath);
        Console.WriteLine($"Extension      : {extension}");

        // (Reference) Get Root Directory
        // Return value: D:\
        string root = Path.GetPathRoot(filePath);
        Console.WriteLine($"Root           : {root}");
    }
}

Execution Result

Original Path: D:\Projects\Design\Assets\logo_v2.png

--- Analysis Results ---
Directory Name : D:\Projects\Design\Assets
File Name      : logo_v2.png
No Ext Name    : logo_v2
Extension      : .png
Root           : D:\

Explanation and Technical Points

1. Processing as Strings

These methods do not check if the file actually exists on the disk. They break down the components based purely on string patterns. Therefore, you can use them without issues even on paths that do not exist or paths that are currently being constructed.

2. Path.GetDirectoryName

This returns the part of the path with the “file name” removed. Note: If the path is a root directory (e.g., C:\), it may return null.

3. Path.GetExtension

When returning the extension, it always includes the dot (.) (e.g., .png). If the file has no extension, it returns an empty string "".

4. Platform Differences

The Path class attempts to handle both Windows paths (using \) and Linux/macOS paths (using /) appropriately regardless of the running OS. However, parsing is fundamentally based on the standard separator characters of the operating system where the application is executing.

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次