내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-07-10 09:03

제목

[C#] .net core 리눅스 환경에서 Path.Combine 사용


윈도우 path 구분 문자와 리눅스 path 구분 문자 서로 다르기 때문에

Path.Combine 의 사용이 다르다.

윈도우 : \

리눅스 : /

윈도우 환경에서 리눅스 경로를 함께 다루는 경우 정성태 님 블로그의 다음 코드를 참조해서 사용하면 된다.

using System;
using System.Collections.Generic;
using System.IO;
 
class Program
{
    static void Main(string[] args)
    {
        string txt = "/home/tester/bin/x64/Debug/../test.conf";
 
        NoException(Path.GetFullPath, txt);
        NoException((path) => new Uri(path).LocalPath, txt);
        NoException(NormalizePath, txt);
    }
 
    private static void NoException(Func<stringstring> normalizePath, string path)
    {
        try
        {
            Console.WriteLine(normalizePath(path));
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
 
        Console.WriteLine();
    }
 
    internal static string NormalizePath(string path)
    {
        List<string> pathList = new List<string>();
        string[] parts = path.Split(new char[] { '/''\\' }, StringSplitOptions.None);
 
        foreach (string part in parts)
        {
            if (part == ".")
            {
                continue;
            }
 
            if (part == ".." && pathList.Count >= 1)
            {
                pathList.RemoveAt(pathList.Count - 1);
                continue;
            }
 
            pathList.Add(part);
        }
 
        return string.Join('/'.ToString(), pathList.ToArray());
    }
}
cs


출처1

https://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&pageno=5&detail=1&wid=11905

출처2