2017-05-16 122 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); 

它保存文件罰款。然而,當我試圖挽救它喜歡

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

我得到一個運行時錯誤說A generic error occurred in GDI+

不知道爲什麼發生這種情況。最初我以爲它可能是文件夾權限,但是這似乎並不是這種情況,因爲它使用第一種方法。 enter image description here

任何想法爲什麼會發生這種情況?

我的代碼如下

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

當使用Bitmap的保存方法,你應該確保該目錄存在。在第一種情況下,你的目錄是這樣的:

這個目錄應該存在於你的系統

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

但是在第二種情況下(使用Directory.GetCurrentDirectory方法時)你的目錄應該是這樣的(它可能有一個外部文件夾DebugReleaseErrorLog

這些目錄不應該存在於您的系統中(具體取決於您在調試或發行模式)

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

是的,我剛剛意識到它有路徑中的調試。對我來說太愚蠢了。感謝您指出這一點 –

+0

@CraigGallagher每當您在StackOverflow中爲您的問題提供正確答案時,請不要忘記將其標記爲答案,因此具有相同問題的其他人將更容易引導。 –

+0

現在就做:)謝謝 –

相關問題