我需要做一個檢查,看看文件是否存在,他們的輸入,我怎麼能做到這一點,我嘗試使用嘗試&漁獲物和它沒有任何效果如何捕捉異常並繼續程序? C#
if (startarg.Contains("-del") == true)
{
//Searches "Uninstallers" folder for uninstaller containing the name that they type after "-del" and runs it
string uninstalldirectory = Path.Combine(Directory.GetCurrentDirectory(), "Uninstallers");
DirectoryInfo UninstallDir = new DirectoryInfo(uninstalldirectory);
string installname = startarg[2].ToString();
//Removes file extesion "-del "
installname.Remove(0, 5);
string FullFilePath = Path.Combine(uninstalldirectory, installname);
try
{
//Makes the uninstaller invisible to the user and sets other settings
Process Uninstaller = new Process();
Uninstaller.StartInfo.FileName = FullFilePath;
Uninstaller.StartInfo.UseShellExecute = false;
Uninstaller.StartInfo.CreateNoWindow = true;
Uninstaller.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Uninstaller.Start();
}
//Only is run if the package isn't installed
catch (System.Exception)
{
Console.WriteLine("The specified package is not installed, you most likely mispelled it or didnt put quotes around it, try again");
}
}
該代碼的絕大部分是獲得當前目錄並添加「卸載程序」。
編輯: 調試結果是ArgumentOutOfRangeException
我使用File.Exists if語句和else嘗試,它仍然崩潰
編輯#2:什麼
只是有點我與這個程序有關:我試圖編寫一個跨平臺(使用mono,還沒有移植它,因爲我不喜歡MonoDevelop)包管理器,這是它的功能,它刪除包。它通過在應用程序的Uninstallers文件夾中獲取卸載腳本來獲取已安裝應用程序的列表。我希望它是獨立的目錄,所以我必須得到它的當前目錄
我的代碼工作正常,如果該文件存在,但是當它不崩潰這就是我的問題
當你運行這個命令時,你看到了什麼結果,指定一個不存在的文件? 「它沒有效果」是什麼意思? – 2009-11-15 23:58:36
@lndebi,將你的評論拼湊在一起,你會在'string FullFilePath ...'行得到'ArgumentOutOfRange'異常。查看我答案中的第一個項目符號,以解決您的緊急問題。 – 2009-11-16 00:47:27
...和詹姆斯的答案直接解決它。 – 2009-11-16 00:50:27