這裏指出錯誤值是從我的節目directoryInfo.Name顯示在同一時間
public partial class Form1 : Form
{
DirectoryInfo tempdirectory = new DirectoryInfo(@"\temp");
const string DEFAULT_ADDRESS_TEXT = "<click load button to load a file>";
private void Form1_Load(object sender, EventArgs e)
{
lblAddress.Text = DEFAULT_ADDRESS_TEXT;
if (Directory.Exists(tempdirectory.Name))
{
lblAddress.Text = tempdirectory.FullName;
foreach (DirectoryInfo dir in tempdirectory.GetDirectories())
{
dir.Delete(true);
}
foreach (FileInfo file in tempdirectory.GetFiles())
{
file.Delete();
}
}
Directory.CreateDirectory(tempdirectory.Name);
lblAddress.Text = tempdirectory.Name;
}
}
程序運行位置的方法(PRL) - > G:\用戶\\文檔\ Visual Studio 2010的\ Projects \ Comics Project \ ZipEntryDemo2 \ ZipEntryDemo2 \ bin \ Debug
在程序的第一次運行中,名爲temp的文件夾將在程序位置(PRL \ temp)創建。 關閉應用程序並再次運行後,在第一步創建的臨時目錄不爲空;而是lblAddress顯示值G:\ temp;實際上甚至不存在。
然後我明確地創建了一個文件夾G:\ temp,並在其中放置了一些額外的文件和文件夾,出於測試目的,程序現在從G:\ temp中刪除所有文件和文件夾,並且PRL \ temp仍然如此與所有內容。
實際上,我的程序將臨時文件夾的位置(即PRL \ temp)傳遞給提取該文件夾中的內容的方法。在每次運行中,內容總是在PRL \ temp中提取; 但如果該文件夾存在,則G:\ temp的內容會丟失。
另一個奇怪的事情是,如果條件語句未執行且程序在正確的位置(即PRL \ temp)創建了一個文件夾,那麼當我在第一次運行時由於temp目錄不存在而在PRL中進行調試時。 這只是文件和文件夾檢查錯誤的文件夾G:\臨時
我沒有得到像文件夾已經存在或任何類型的異常,直到現在。
我還注意到,如果我將「\ temp」更改爲「temp」,現在所有的事情都發生在正確的位置,即PRL \ temp;中間沒有G:\ temp。我的程序工作正常。但我覺得它很奇怪,並會很感激,如果有人可以解釋這一點。謝謝,對不起,如果這是一個非常愚蠢的問題,這是我的一些IO經驗。
它調用解壓methos的方法是
private void btnLoad_Click(object sender, EventArgs e)
{
OpenFileDialog f = new OpenFileDialog();
f.Filter = "Zip Files(*.zip)|*.zip";
f.Multiselect = false;
if (f.ShowDialog() == DialogResult.OK)
{
unzip(f.FileName, tempdirectory.Name, 4096);
}
}
這裏tempDirectory.Name傳遞給解壓縮功能,它並沒有在該方法得到操縱。 4096是緩衝區大小,無關緊要。
是的,我知道許多機器上沒有try-catch塊會破壞代碼,但這只是一個提取文件的測試程序。我的問題是爲什麼它刪除一個文件夾的內容並提取正確的文件夾。 –