파일의 전체 경로에서 파일명만 필요한 경우가 있다. 또한 파일의 경로만 필요한 경우도 있다. C#에서는 파일명을 둘러싼 여러가지 경우를 고려해서 유용한 함수를 제공한다. 본 포스팅에서는 파일명과 확장자, 파일 경로를 간단한 함수 호출만으로 구할 수 있는 방법을 소개한다.

 

 

 

# 전체 경로 추출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.GetFullPath(filePath));
        }
    }
}
w

 

 

 

# 파일명만 추출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.GetFileNameWithoutExtension(filePath));
        }
    }
}
w

 

 

 

# 파일 확장자만 추출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.GetExtension(filePath));
        }
    }
}
w

 

 

 

# 파일명과 확장자 추출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.GetFileName(filePath));
        }
    }
}
w

 

 

 

# 파일 경로 추출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.GetDirectoryName(filePath));
        }
    }
}
w

 

 

 

# 파일명과 확장자 추출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.GetFileName(filePath));
        }
    }
}
w

 

 

 

# 파일명과 파일 경로 조합

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            // 문자열 직접 입력
            Console.WriteLine(System.IO.Path.Combine(
                @"C:\Users\wookoa\Pictures",
                "signature.png")
            );
 
            // 함수로 입력
            string filePath = @"C:\Users\wookoa\Pictures\signature.png";
            Console.WriteLine(System.IO.Path.Combine(
                System.IO.Path.GetDirectoryName(filePath),
                System.IO.Path.GetFileName(filePath)
                )
            );
        }
    }
}
w

 

 

 

마지막의 파일명과 파일 경로의 조합에서 첫번째 파라미터는 역슬러시가 마지막에 붙어도 지능적으로 잘 작동한다. 직접 문자열을 파싱해도 같은 결과를 얻을 수 있지만 제공되는 Path 클래스를 이용할 경우 오류가 발생할 확률을 조금 더 줄일 수 있다. 또한 가독성도 좋아서 매우 유용한 클래스다.

 

 

Private comment