2017-05-16 2 views
2

내 프로젝트 bin 폴더에 파일을 저장하려고합니다. 어떤 이유로 경로에 문자열을 지정하면비트 맵 저장시 GDI + 예외에 일반 오류가 발생했습니다.

string filePath = @"C:\Users\Craig\Documents\Visual Studio 2015\Projects\CreateTextExample\CreateTextExample\bin\ErrorLog"; 
Thread.Sleep(100); 
bitmap.Save([email protected]"\ErrorImage.Bmp", ImageFormat.Bmp); 

과 같은 문자가 저장됩니다. 나는 시도하고 저장할 때 그러나 나는 A generic error occurred in GDI+

확실하지 왜 이런 일이 말을 런타임 오류가

string filePath = System.IO.Directory.GetCurrentDirectory() + @"\ErrorLog"; 
Thread.Sleep(100); 
bitmap.Save([email protected]"\ErrorImage.Bmp", ImageFormat.Bmp); 

좋아한다. 처음에는 폴더 권한 일 수도 있지만 첫 번째 방법을 사용하면 작동하지 않는 것처럼 보입니다. enter image description here

왜 그런가? 당신이 디렉토리가 존재하는지 확인해야 Bitmap의 저장 방법을 사용하는 경우

string currentContent = String.Empty; 

bitmap = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height); 
Graphics graphics = Graphics.FromImage(bitmap as Image); 
graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size); 

string filePath = System.IO.Directory.GetCurrentDirectory() + @"\ErrorLog"; 
Thread.Sleep(100); 
bitmap.Save([email protected]"\ErrorImage.Bmp", ImageFormat.Bmp); 
+1

왜 자고 있니? 또한 연결하려면 ['System.IO.Path.Combine'] (https://msdn.microsoft.com/en-us/library/system.io.path.combine (v = vs.110) .aspx)을 사용하십시오. 경로, 훨씬 청소기. – MrZander

+0

예외 스택은 유용 할 수도 있습니다. – eschneider

+0

"첫 번째 방법을 사용하여 작동합니다". 당신이 불가능을 제거했을 때, 남아있는 것이 무엇이든지간에, 진실이어야합니다. 'System.IO.Directory.GetCurrentDirectory()'는 반환한다고 생각하는 것을 반환합니까? 두 번째 접근 방식에서도'filePath'는'C : \ Users \ Craig \ Documents \ Visual Studio 2015 \ Projects \ CreateTextExample \ CreateTextExample \ bin \ ErrorLog'입니까? –

답변

1

을 다음과 같이

내 코드입니다.

이 디렉토리는 시스템

C:\Users\Craig\Documents\Visual Studio 2015\Projects\CreateTextExample\CreateTextExample\bin\ErrorLog

에 있어야하지만 두 번째 경우에 (Directory.GetCurrentDirectory 방법을 사용하는 경우) 디렉토리 이런 식으로 뭔가해야한다 (: 첫 번째 경우 디렉토리이있다 그것은이 디렉토리는 시스템에 존재해서는 안 ErrorLog)

전에 extera Debug 또는 Release 폴더를 가질 수있다 (당신을 따라 디렉토리가없는 시스템에 존재하는 않기 때문에

C:\Users\Craig\Documents\Visual Studio 2015\Projects\CreateTextExample\CreateTextExample\bin\Debug\ErrorLog

C:\Users\Craig\Documents\Visual Studio 2015\Projects\CreateTextExample\CreateTextExample\bin\Release\ErrorLog

그래서 bitmap.Save이 오류가 발생합니다) 디버그 또는 릴리스 모드에 있습니다.

+0

예 저는 경로에 Debug가 있다는 것을 깨달았습니다. 그래서 나 바보. 이 문제를 지적 해 주셔서 감사합니다 –

+0

@CraigGallagher StackOverflow에서 질문에 대한 정답을 얻었을 때마다 대답으로 표시하는 것을 잊지 마십시오. 동일한 문제가있는 다른 사람들도 쉽게 안내 할 수 있습니다. –

+0

이제 할 것입니다 :) 감사합니다. –

관련 문제