2012-09-02 4 views
3

내 프로그램에서 호출해야하는 내 폴더에는 두 개의 이미지 파일이 있습니다. 나는 사용했다 :filestream을 사용하여 루트 디렉토리 폴더에서 파일 읽기

AppDomain.curentDomain.baseDirectory + "Path and file name"; 

그러나 이것은 내가 원하지 않는 나의 bin 디렉토리로 간다. 루트 디렉토리에서 폴더를 읽으 려합니다. 내 폴더 이름을 리소스로 저장하고 거기에 파일을 저장하고 이미지를 호출하여 코드를 작성하십시오.

Windows Form 응용 프로그램의 루트 디렉토리에서 어떻게 읽습니까?

+0

AppDomain.curentDomain.baseDirectory 그리고 Application.startupPath 내가 Windows 응용 프로그램 그래서 II 캔트 사용는 Server.MapPath를 그래서 무슨 일이됩니다 사용하고 – SurajSing

답변

2

일반적으로 bin 폴더에 복사 할 항목을 설정해야합니다. 솔루션 탐색기/탐색기에서 마우스 오른쪽 버튼을 클릭하고 속성을 선택하고 "출력 디렉토리에 복사"를 설정하십시오. 이게 잘 되길 바란다.

1

이를 사용할 수 있습니다

System.IO.Path.Combine(Environment.CurrentDirectory, "Path to File") 

Environment.CurrentDirectory는 당신에게 당신의 응용 프로그램에서 실행되고있는 경로를 제공 할 것입니다. Visual Studio 내에서 실행되는지 여부 또는 응용 프로그램이 배포되는지 여부는 중요하지 않습니다.

사용 예제

// Read image1.jpg from application folder, into Image object 
Image myImage = Image.FromFile(System.IO.Path.Combine(Environment.CurrentDirectory, "image1.jpg")); 
+0

내 소스 코드의 bin/debug 디렉토리에서 모두 검색 그 대안! help dude – SurajSing

+0

ASP.NET 질문에 태그를 지정했습니다. 나는 나의 대답을 업데이트 할 것이다. – Scott

+0

내 대답을 업데이트했습니다 – Scott

1
System.IO.Path.Combine(Application.StartupPath, @"..\..\YourFile.JPG") 

은 파일에 대한 절대 경로를 반환하지만이 것 앱을 배포 더 빈 \ 디버그가 없기 때문에 당신은 VS에서 작업하는 동안 만 일 .

string path = Path.Combine(Application.StartupPath, @"..\..\YourFile.JPG"); 
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); 
Image image = Image.FromStream(stream); 
stream.Close(); 

는 EXE와 함께 파일을 보낼 계획이라면, 바로 프로젝트에 포함을 선택, 솔루션 탐색기에서 파일을 클릭, 오른쪽, 다시 선택 속성을 클릭하고 빌드 작업 설정 : 없음출력 디렉토리에 복사 : 속성 창에서이 더 최신 인 경우 복사하면 빌드 할 때마다 파일이 bin \ Debug에 복사됩니다. 그럼 당신은 사용할 수 있습니다

string path = Path.Combine(Application.StartupPath, "YourFile.JPG"); 
VS 에서 작동

를 배포 할 때. 더 깔끔한 배포를 위해 실행 파일에 파일을 리소스로 포함하는 것이 더 좋습니다.

+0

filestream !!!!를 사용하여 이것을 어떻게 사용합니까? – SurajSing

+0

내 대답, 행운을 업데이 트되었습니다. – RollingCog

5

Environment.CurrentDirectory을 사용하지 않겠습니까?

string path = Environment.CurrentDirectory + @"\Image1.jpg"; 
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); 
Image image = Image.FromStream(stream); 
stream.Close(); 

응용 프로그램 시작 경로를 결합하는 것이 좋습니다. :) Environment.CurrentDirectory은 응용 프로그램이 상주하는 현재 경로를 반환합니다.

+0

Path.Combine()을 사용하지 않는 이유는 무엇입니까? – Casey

0

사용 Server.MapPath("/path/to/file")