C#でフルパス名からディレクトリ名、ファイル名、拡張子に分割

C# でファイルを扱っていて、フルパス名からディレクトリ名、ファイル名、拡張子に分割する方法をいくつか試してみました。

using System;
using System.IO;

namespace splitpath
{
    class Program
    {
        static void Main(string[] args)
        {
            string fullpath = @"C:\Documents and Settings\username\My Documents\Worktest.txt";

            Console.WriteLine("string.Splitで分割:");
            char[] seps = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar };
            string[] paths = fullpath.Split(seps);
            foreach (string path in paths)
            {
                Console.WriteLine(path);
            }

            Console.WriteLine("Path.Combineで連結");
            Console.WriteLine(Path.Combine(paths));
            Console.WriteLine("↑ドライブ文字の直後には" + Path.DirectorySeparatorChar + "が付加されない。");

            Console.WriteLine("Path.GetPathRoot: " + Path.GetPathRoot(fullpath));
            Console.WriteLine("Path.GetDirectoryName: " + Path.GetDirectoryName(fullpath));
            Console.WriteLine("Path.GetFileName: " + Path.GetFileName(fullpath));
            Console.WriteLine("Path.GetFileNameWithoutExtension: " + Path.GetFileNameWithoutExtension(fullpath));
            Console.WriteLine("Path.GetExtension: " + Path.GetExtension(fullpath));
        }
    }
}

実行結果:

string.Splitで分割:
C:
Documents and Settings
username
My Documents
Work
test.txt
Path.Combineで連結
C:Documents and Settings\username\My Documents\Worktest.txt
↑Path.Combineで連結してもドライブ文字の直後にはが付加されない。
Path.GetPathRoot: C:
Path.GetDirectoryName: C:Documents and SettingsusernameMy DocumentsWork
Path.GetFileName: test.txt
Path.GetFileNameWithoutExtension: test
Path.GetExtension: .txt

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください