private static void InitExtractDirectoryFileThreadProc(TreeNode treeParentNode) { if (treeParentNode == null) { return; } TreeNodeFileInfo l_TreeNodeFileInfo = ExtractAllThread.s_nodeHybridDictionary[treeParentNode] as TreeNodeFileInfo; if (l_TreeNodeFileInfo == null) { return; } if (Directory.Exists("Demo ExtractFile") == false) { Directory.CreateDirectory("Demo ExtractFile"); m_vfsExtractDirectoryFile.richTextBox.AppendText("目录" + "Demo ExtractFile" + "创建完成!\n"); } string strPathName = l_TreeNodeFileInfo.m_strFullPath; string[] strPath = strPathName.Split("\\".ToCharArray()); if (strPath.Length == 0) { return; } string strKey = string.Empty; for (int iIndex3 = 0; iIndex3 < strPath.Length; iIndex3++) { strKey = string.Concat(strKey, "\\", strPath[iIndex3]); if (Directory.Exists("Demo ExtractFile" + strKey) == false) { Directory.CreateDirectory("Demo ExtractFile" + strKey); m_vfsExtractDirectoryFile.richTextBox.AppendText("目录" + "Demo ExtractFile" + strKey + "创建完成!\n"); } } m_vfsExtractDirectoryFile.richTextBox.AppendText("开始解压目录" + l_TreeNodeFileInfo.m_strFullPath + "...\n"); for (int iIndex = 0; iIndex < l_TreeNodeFileInfo.m_ListViewItemFileInfo.Count; iIndex++) { if (s_isFormClose == true) { s_isThreadClose = true; s_isExtractAllThread = false; m_vfsExtractDirectoryFile.richTextBox.AppendText("程序关闭中...当前的操作终止"); m_vfsExtractDirectoryFile.Close(); return; } m_vfsExtractDirectoryFile.progressBar1.PerformStep(); string l_strExtractFileFullPath = l_TreeNodeFileInfo.m_ListViewItemFileInfo[iIndex].m_strFullPath.Substring(1); m_vfsExtractDirectoryFile.richTextBox.AppendText("文件" + l_strExtractFileFullPath + "开始解压中...\n"); s_TriggerVFS.ExtractFile(l_strExtractFileFullPath, "Demo ExtractFile\\" + l_strExtractFileFullPath); m_vfsExtractDirectoryFile.richTextBox.AppendText("文件解压在 Demo ExtractFile\\" + l_strExtractFileFullPath + " 中, 完成!\n"); } m_vfsExtractDirectoryFile.richTextBox.AppendText("目录" + l_TreeNodeFileInfo.m_strFullPath + "全部解压, 完成!\n"); for (int iIndex = 0; iIndex < treeParentNode.Nodes.Count; iIndex++) { InitExtractDirectoryFileThreadProc(treeParentNode.Nodes[iIndex]); } }
private static void OpenIndexThreadProc() { s_isExtractAllThread = true; CloseMenu(m_vfsOpenIndexForm); m_vfsOpenIndexForm.richTextBox.AppendText("文件开始读取中...\n"); s_TriggerVFS.OpenIndex("data.idx", false); TreeNode l_RootTree = new TreeNode("Root"); for (int iIndex = 0; iIndex < s_TriggerVFS.FileTreeArray.Length; iIndex++) { m_vfsOpenIndexForm.richTextBox.AppendText("VFS 文件" + s_TriggerVFS.VFSNames[iIndex] + " 存档数(" + s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount.ToString() + ")\n"); for (int iIndex2 = 0; iIndex2 < s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount; iIndex2++) { m_vfsOpenIndexForm.progressBar1.PerformStep(); string strPathName = s_TriggerVFS.FileTreeArray[iIndex].m_strFiles[iIndex2]; string[] strPath = strPathName.Split("\\".ToCharArray()); if (strPath.Length == 0) { continue; } TreeNode l_ParentTree = l_RootTree; string strKey = string.Empty; TreeNodeFileInfo l_TreeNodeFileInfoDirectory = null; for (int iIndex3 = 0; iIndex3 < strPath.Length; iIndex3++) { if (s_isFormClose == true) { s_isThreadClose = true; s_isExtractAllThread = false; m_vfsOpenIndexForm.richTextBox.AppendText("程序关闭中...当前的操作终止"); m_vfsOpenIndexForm.Close(); return; } strKey = string.Concat(strKey, "\\", strPath[iIndex3]); TreeNodeFileInfo l_TreeNodeFileInfo = s_strHybridDictionary[strKey] as TreeNodeFileInfo; TreeNode l_TreeNode = null; if (l_TreeNodeFileInfo == null) { l_TreeNodeFileInfo = new TreeNodeFileInfo(); l_TreeNodeFileInfo.m_ListViewItemFileInfo = new List <ListViewItemFileInfo>(); l_TreeNode = new TreeNode(strPath[iIndex3]); l_TreeNodeFileInfo.m_TreeNode = l_TreeNode; if (iIndex3 == (strPath.Length - 1)) { l_TreeNodeFileInfo.m_strFullPath = strKey; l_TreeNodeFileInfo.m_strFileName = strPath[strPath.Length - 1]; l_TreeNodeFileInfo.m_strInArchive = s_TriggerVFS.VFSNames[iIndex]; l_TreeNodeFileInfo.m_iArchiveNumber = s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount; //string l_strFullPath = strKey.Substring( 1 ); //TriggerVFS.FileInfo l_FileInfo = new TriggerVFS.FileInfo(); //if ( s_TriggerVFS.GetFileInfo( l_strFullPath, ref l_FileInfo ) == true ) //{ // l_TreeNodeFileInfo.m_iAttribute = l_FileInfo.m_iAttribute; // l_TreeNodeFileInfo.m_iChecksum = l_FileInfo.m_iChecksum; //} //else // m_vfsOpenIndexForm.richTextBox.AppendText( "GetFileInfo(" + l_strFullPath + ") Error!\n" ); //l_TreeNodeFileInfo.m_iFileSize = s_TriggerVFS.GetFileSize( l_strFullPath ); // 添加 ListViewItem ListViewItemFileInfo l_ListViewItemFileInfo = new ListViewItemFileInfo(); l_ListViewItemFileInfo.m_ListViewItem = new ListViewItem(l_TreeNodeFileInfo.m_strFileName); l_ListViewItemFileInfo.m_strFullPath = strKey; l_ListViewItemFileInfo.m_strFileName = strPath[strPath.Length - 1]; l_ListViewItemFileInfo.m_strInArchive = s_TriggerVFS.VFSNames[iIndex]; l_ListViewItemFileInfo.m_iArchiveNumber = s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount; l_TreeNodeFileInfoDirectory.m_ListViewItemFileInfo.Add(l_ListViewItemFileInfo); s_ListItemHybridDictionary.Add(l_ListViewItemFileInfo.m_ListViewItem, l_ListViewItemFileInfo); } else { l_TreeNodeFileInfo.m_IsDirectory = true; l_TreeNodeFileInfo.m_strFullPath = strKey; l_TreeNodeFileInfo.m_strInArchive = string.Empty; l_ParentTree.Nodes.Add(l_TreeNode); s_strHybridDictionary.Add(strKey, l_TreeNodeFileInfo); s_nodeHybridDictionary.Add(l_TreeNode, l_TreeNodeFileInfo); l_TreeNodeFileInfoDirectory = l_TreeNodeFileInfo; } } else { l_TreeNode = l_TreeNodeFileInfo.m_TreeNode; l_TreeNodeFileInfoDirectory = l_TreeNodeFileInfo; } l_ParentTree = l_TreeNode; } } } m_vfsOpenIndexForm.progressBar1.Value = m_vfsOpenIndexForm.progressBar1.Maximum; m_vfsOpenIndexForm.progressBar1.Value = 0; m_vfsOpenIndexForm.richTextBox.AppendText("文件读取完成!\n"); s_RootTree = l_RootTree; OpenMenu(m_vfsOpenIndexForm); s_isExtractAllThread = false; }
private static void ExtractAllFileThreadProc() { s_isExtractAllThread = true; CloseMenu(m_vfsExtractAllFileEditorForm); m_vfsExtractAllFileEditorForm.richTextBox.AppendText("开始解压全部文件中...\n"); if (Directory.Exists("Demo ExtractFile") == false) { Directory.CreateDirectory("Demo ExtractFile"); } for (int iIndex = 0; iIndex < s_TriggerVFS.FileTreeArray.Length; iIndex++) { for (int iIndex2 = 0; iIndex2 < s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount; iIndex2++) { m_vfsOpenIndexForm.progressBar1.PerformStep(); string strPathName = s_TriggerVFS.FileTreeArray[iIndex].m_strFiles[iIndex2]; string[] strPath = strPathName.Split("\\".ToCharArray()); m_vfsExtractAllFileEditorForm.progressBar1.PerformStep(); if (strPath.Length == 0) { continue; } string strKey = string.Empty; for (int iIndex3 = 0; iIndex3 < strPath.Length; iIndex3++) { if (s_isFormClose == true) { s_isThreadClose = true; s_isExtractAllThread = false; m_vfsExtractAllFileEditorForm.richTextBox.AppendText("程序关闭中...当前的操作终止"); m_vfsExtractAllFileEditorForm.Close(); return; } strKey = string.Concat(strKey, "\\", strPath[iIndex3]); if (iIndex3 == (strPath.Length - 1)) { string l_strExtractFileFullPath = strKey.Substring(1); m_vfsExtractAllFileEditorForm.richTextBox.AppendText("文件" + l_strExtractFileFullPath + "开始解压中...\n"); s_TriggerVFS.ExtractFile(l_strExtractFileFullPath, "Demo ExtractFile\\" + l_strExtractFileFullPath); m_vfsExtractAllFileEditorForm.richTextBox.AppendText("文件解压在 Demo ExtractFile\\" + l_strExtractFileFullPath + " 中, 完成!\n"); } else { if (Directory.Exists("Demo ExtractFile" + strKey) == false) { Directory.CreateDirectory("Demo ExtractFile" + strKey); m_vfsExtractAllFileEditorForm.richTextBox.AppendText("目录" + "Demo ExtractFile" + strKey + "创建完成!\n"); } } } } } m_vfsOpenIndexForm.progressBar1.Value = m_vfsOpenIndexForm.progressBar1.Maximum; m_vfsOpenIndexForm.progressBar1.Value = 0; m_vfsExtractAllFileEditorForm.richTextBox.AppendText("文件全部解压完成!\n"); OpenMenu(m_vfsExtractAllFileEditorForm); s_isExtractAllThread = false; }