현재 폴더 경로 가져오기
저는 파일을 변환하는 프로그램을 만들고 싶습니다.나는 사용자가 실행 파일을 아무 디렉토리에나 배치할 수 있기를 바라며, 그 프로그램을 실행할 때(.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
'programing' 카테고리의 다른 글
루비의 배열 슬라이싱: 비논리적인 행동에 대한 설명(Rubykoans.com 에서 제공) (0) | 2023.05.29 |
---|---|
Xcode에서 경고를 억제하는 방법이 있습니까? (0) | 2023.05.24 |
postgres 기본 표준 시간대 (0) | 2023.05.24 |
가독성은 URL에서 텍스트를 추출하는 데 어떤 알고리즘을 사용합니까? (0) | 2023.05.24 |
Apache poi를 사용하여 중앙 셀 병합 및 정렬 (0) | 2023.05.24 |