programing

현재 폴더 경로 가져오기

stoneblock 2023. 5. 24. 21:40

현재 폴더 경로 가져오기

저는 파일을 변환하는 프로그램을 만들고 싶습니다.나는 사용자가 실행 파일을 아무 디렉토리에나 배치할 수 있기를 바라며, 그 프로그램을 실행할 때(.exe를 더블 클릭할 때) 나는 프로그램이 exe 파일이 존재하는 현재 폴더 내의 모든 파일을 처리하기를 원합니다.프로그램이 현재 실행 중인 경로를 어떻게 결정할 수 있습니까?

나는 노력했다.System.Windows.Forms.Application.StartupPath하지만 그것은 잘못된 방법인 것 같습니다.

아이디어 있어요?

사용하면 안 됩니다.Directory.GetCurrentDirectory()사용자의 경우 현재 디렉터리가 실행 폴더와 다를 수 있으므로 특히 바로 가기를 통해 프로그램을 실행할 때 사용합니다.

사용하는 것이 좋습니다.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);당신의 목적을 위하여현재 실행 중인 어셈블리가 있는 경로 이름을 반환합니다.

내가 제안한 접근법은 실행 어셈블리, 진입 어셈블리 또는 다른 로드된 어셈블리를 구별할 수 있게 해줍니다. 소너 괴눌이 답변에서 말했듯이,

System.IO.Path.GetDirectoryName(Application.ExecutablePath);

또한 충분할 수도 있습니다.이는 다음과 같습니다.

System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
System.AppDomain.CurrentDomain.BaseDirectory

그러면 응용 프로그램의 실행 디렉터리가 표시됩니다.이것은 웹 애플리케이션에서도 작동합니다.나중에 파일에 액세스할 수 있습니다.

다음 코드로 간단한 콘솔 응용 프로그램을 만들었습니다.

Console.WriteLine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory);
Console.WriteLine(System.Environment.CurrentDirectory);
Console.WriteLine(System.IO.Directory.GetCurrentDirectory());
Console.WriteLine(Environment.CurrentDirectory);

결과 실행 파일을 복사했습니다.C:\temp2그런 다음 해당 실행 파일의 바로 가기를 에 배치했습니다.C:\temp3한 번은 exe 자체에서, 한 번은 바로 가기에서 실행했습니다.두 번 모두 다음과 같은 출력을 제공했습니다.

C:\temp2
C:\temp2\
C:\temp2
C:\temp2
C:\temp2

저는 사실상 정확히 같은 일을 하는 다섯 가지 다른 방법이 있는 이유를 설명할 수 있는 약간의 거짓된 이유가 있을 것이라고 확신하지만, 저는 확실히 그것이 무엇인지 모릅니다.그럼에도 불구하고, 대부분의 상황에서 당신은 당신이 원하는 어떤 것이든 자유롭게 선택할 수 있습니다.

업데이트: 바로 가기 속성을 수정하여 "시작 위치:" 필드를 변경했습니다.C:\temp3그 결과 다음과 같은 출력이 나왔습니다.

C:\temp2
C:\temp2\
C:\temp3
C:\temp3
C:\temp3

...이것은 적어도 다른 방법들 사이의 차이점들 중 일부를 보여줍니다.

사용해 보십시오.

System.Environment.CurrentDirectory

이것을 사용합니다.

var currentDirectory = System.IO.Directory.GetCurrentDirectory(); 

이것도 사용할 수 있습니다.

var currentDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string appPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);

출발지

지정한 경로 문자열에 대한 디렉터리 정보를 반환합니다.

출발지

실행 파일 이름을 포함하여 응용 프로그램을 시작한 실행 파일의 경로를 가져옵니다.

.NET CORE용System.AppContext.BaseDirectory

으로)AppDomain.CurrentDomain.BaseDirectory)

1.

Directory.GetCurrentDirectory();

2.

Thread.GetDomain().BaseDirectory

3.

Environment.CurrentDirectory

이것은 특히 닷넷 코어 단일 파일 게시를 사용할 때 가장 적합합니다. Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName).

이 코드 블록은 문자열 유형의 앱 디렉터리 경로를 만듭니다.

string path="";
path=System.AppContext.BaseDirectory;

행운을 빌어요

최상의 결과 이모에 사용합니다.

에는 수할있는 exe로를원경우하를 사용할 수 .System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

프로젝트 폴더의 경로를 원하는 경우 다음 작업도 수행할 수 있습니다.

        DirectoryInfo di = new DirectoryInfo(".");
       //OR 
        DirectoryInfo di = new DirectoryInfo("../../../");

        Console.WriteLine(di.FullName);

결과: D:\Dev\C#\ProjectFolder\프로젝트 폴더\

언급URL : https://stackoverflow.com/questions/15653921/get-current-folder-path