public static void CheckMainFile() { if (File.Exists(txtFileName.Text)) { lnkFileName.Text = Path.GetFileName(txtFileName.Text); if (IoTools.FileOpened(txtFileName.Text)) { InvalidFile = true; lFileSize.Text = "File Size: Access Denied."; return; } lFileSize.Text = "File Size: " + IoTools.ParseFileSize(txtFileName.Text); lnkFileName.Enabled = true; InvalidFile = false; } else { InvalidFile = true; if (txtFileName.Text.Length > 0) { lnkFileName.Text = "File does not exists."; } else { lnkFileName.Text = "No files selected."; } lnkFileName.Enabled = false; lFileSize.Text = "File Size: N/A"; } UpdatePartsInfo(); }
//0- Original File Name //1- Original File Size //2- First Part Name //3- Parts Number //4- { // P% Name // P% Size // } private void GenerateSfx() { if (!includeSfx) { return; } Header hdr = new Header(); //Self Joiner Signature hdr.Add(Path.GetFileName(fileName)); hdr.Add(fileSize.ToString()); hdr.Add(Path.GetFileName(files[0])); hdr.Add(files.Count.ToString()); for (int i = 0; i < files.Count; i++) { hdr.Add(Path.GetFileName(files[i])); hdr.Add(pSizes[i].ToString()); } if (Sfx.OutPath.Length > 0) { hdr.Add(Sfx.OutPath); } else { hdr.Add("\0"); } if (Sfx.Comment.Length > 0) { hdr.Add(Sfx.Comment); } else { hdr.Add("\0"); } string sfxPath = Path.Combine(outputFolder, "Q Join.exe"); File.Copy(Path.Combine(Application.StartupPath, "qj.bin"), sfxPath, true); long sfxSize = IoTools.GetFileSize(sfxPath); FileStream fs = new FileStream(sfxPath, FileMode.Append); BinaryWriter br = new BinaryWriter(fs); br.Seek(0, SeekOrigin.End); hdr.Write(br); fs.Close(); br.Close(); fs.Dispose(); }
private void GetSplitterInfo() { info.FileSize = IoTools.GetFileSize(fileName); if (segmentSize == 0) { return; } info.SegmentSize = segmentSize; info.Segments = (int)(info.FileSize / segmentSize + 0.5f); UpdateSegments(); }
public static bool CheckSplitter(FrmBase frm) { //Check if the file existed if (!File.Exists(txtFileName.Text)) { string msg = "Invalid source file."; if (txtFileName.Text.Length > 0) { msg = "The file :" + "\n\'" + txtFileName.Text + "\' " + "does not exists."; } frm.ShowMessage(msg, MsgType.Error); return(false); } else { if (IoTools.FileOpened(txtFileName.Text)) { frm.ShowMessage("Source file Access Denied, file is being used by another process.", MsgType.Error); return(false); } } if (GetPartSize() <= 0) { frm.ShowMessage("Invalid part size.", MsgType.Error); return(false); } if (!Directory.Exists(txtFolderName.Text)) { string msg = "Invalid destination folder name."; if (txtFolderName.Text.Length > 0) { msg = "Destination folder:" + "\n\'" + txtFolderName.Text + "\' " + "does not exists."; } frm.ShowMessage(msg, MsgType.Error); return(false); } return(true); }
private void BtnOk_Click(object sender, EventArgs e) { bool error; string pName = TxtProfile.Text; long pSize = 0; double dblSize = 0; double.TryParse(TxtSize.Text, out dblSize); pSize = (long)(dblSize * Math.Pow(1024, CmbUnit.SelectedIndex)); if (pSize > (long)Math.Pow(1024, 5)) { MessageBox.Show("Invalid size, Part size is too large.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } error = CheckErrors(); if (!error) { if (!editMode) { if (Ini.KeyExists("profiles", pName)) { MessageBox.Show("Profile name '" + pName + "' is already existed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } Ini.WriteValue("profiles", pName, IoTools.ParseSize(pSize)); } Ini.WriteValue(pName, "name", TxtProfile.Text); Ini.WriteValue(pName, "size", pSize.ToString()); Ini.WriteValue(pName, "index", CmbUnit.SelectedIndex); Ini.WriteValue(pName, "description", TxtDesc.Text); this.Close(); } }
public static void UpdatePartsInfo() { long pSize = 0; if (File.Exists(txtFileName.Text)) { pSize = GetPartSize(); Splitter.FileName = txtFileName.Text; Splitter.SegmentSize = pSize; if (pSize > 0) { lPartsNumber.Text = "Parts Number: " + Splitter.Info.Segments.ToString(); lPartSize.Text = "Part Size: " + IoTools.ParseSize(Splitter.SegmentSize); } } else { lPartsNumber.Text = "Parts Number: N/A"; lPartSize.Text = "Part Size: N/A"; } }
public static void CheckMainFile() { if (File.Exists(txtFileName.Text)) { int pNumber = 0; lFileName.Text = "Part Name: " + IoTools.GetFileShortName(Path.GetFileName(txtFileName.Text), 50); lFileSize.Text = "Part Size: " + IoTools.ParseFileSize(txtFileName.Text); pNumber = GetPartsNumber(); if (pNumber > 0) { lPartsNumber.Text = "Parts Number: " + pNumber.ToString(); } else { lPartsNumber.Text = "Parts Number: Some parts are missing"; } InvalidFile = false; } else { InvalidFile = true; if (txtFileName.Text.Length > 0) { lFileName.Text = "Part Name: File does not exists."; } else { lFileName.Text = "Part Name: No files selected."; } lFileSize.Text = "Part Size: N/A"; lPartsNumber.Text = "Parts Number: N/A"; } string fileName = GetFirstPart(); if (fileName == null) { SetCrcChk(false); return; } string pDir = Directory.GetParent(txtFileName.Text).FullName; string fPath = Path.Combine(pDir, fileName); //Check if sfv file exists if (File.Exists(fPath + ".sfv")) { sfvFile = fPath + ".sfv"; SetCrcChk(true); } else { SetCrcChk(false); } }
public static bool LoadParts(FrmBase frm) { string fileName = GetFirstPart(); if (fileName == null) { frm.ShowMessage("Invalid source file name, Can not find first part.", MsgType.Error); return(false); } string pDir = Directory.GetParent(txtFileName.Text).FullName; OutFileName = Path.Combine(pDir, fileName); string fName = fileName + ".1.qsx"; //First part string fPath = Path.Combine(pDir, fName); partSize = IoTools.GetFileSize(fPath); if (partSize == 0) { frm.ShowMessage("File Access Denied, file is being used by another process.", MsgType.Error); return(false); } Header hdr = new Header(); if (!File.Exists(fPath)) { frm.ShowMessage("Source file: '" + fPath + "' does not exists.", MsgType.Error); return(false); } if (IoTools.FileOpened(fPath)) { frm.ShowMessage("File Access Denied, file is being used by another process.", MsgType.Error); return(false); } if (hdr.ReadHeader(fPath)) { int pNum = int.Parse(hdr.HeaderBlock.Rows[0]); //Parts number string[] files = new string[pNum]; for (int i = 0; i < pNum; i++) { string cFile = Path.Combine(pDir, hdr.HeaderBlock.Rows[i + 1]); if (File.Exists(cFile)) { files[i] = cFile; } else { //File 'cFile' Does not exists frm.ShowMessage("Source file: '" + cFile + "' is missing.", MsgType.Error); return(false); } } Joiner.FileNames = files; if (hdr.HeaderBlock.Rows.Count > pNum + 1) { Joiner.OutputSize = long.Parse(hdr.HeaderBlock.Rows[pNum + 1]); } } else { frm.ShowMessage("'" + fPath + "' is not a valid source file.", MsgType.Error); return(false); } return(true); }
/// <summary> /// Return size as string /// </summary> /// <returns></returns> public string GetSize() { return(IoTools.ParseSize(size)); }
private void SpltProcess() { //io main objects FileStream fsReader = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader bReader = new BinaryReader(fsReader); FileStream fsWriter = null; BinaryWriter bWriter = null; iBreak = false; Header hdr = new Header(); int count = 0; long bSize = 0; string fileStr = ""; files.Clear(); long realSegmentSize; long segSize = 0; byte[] buffer = new byte[bufferSize]; GCHandle gc = GCHandle.Alloc(buffer, GCHandleType.Pinned); fileSize = fsReader.Length; if (segmentSize >= fileSize) { realSegmentSize = fileSize; } else { realSegmentSize = segmentSize; } InitValues(); bool fBPass = false; //first buffer pass long hLen = 0; //Header block length hdr.Add(info.Segments.ToString()); for (int i = 0; i < info.Segments; i++) { hdr.Add(GetFileName(i + 1)); } hdr.Add(fileSize.ToString()); hLen = hdr.Length; try { while (fsReader.Position != fileSize) { if (iBreak) { break; } subProgress = 0; currentFile = GetFileName(count + 1); currentPart = count + 1; fileStr = IoTools.FormatPath(outputFolder) + currentFile; files.Add(fileStr); fsWriter = new FileStream(fileStr, FileMode.Create); bWriter = new BinaryWriter(fsWriter); if (currentPart == 1) { hdr.Write(bWriter); segSize = hLen; } else { segSize = 0; } //Just for the last part for accuracy if (fileSize - fsReader.Position < segmentSize) { realSegmentSize = fileSize - fsReader.Position; } while (fsWriter.Position < segmentSize && fsReader.Position != fsReader.Length) { pauseEvent.WaitOne(Timeout.Infinite, false); if (stopEvent.WaitOne(0, true)) { iBreak = true; break; } if (bufferSize > segmentSize) { if (fsReader.Length - fsReader.Position < segmentSize) { bSize = (int)(fsReader.Length - fsReader.Position); } else { bSize = segmentSize; } } else { if (fsReader.Length - fsReader.Position < bufferSize) { if (fsReader.Length - fsReader.Position < segmentSize - fsWriter.Position) { bSize = (int)(fsReader.Length - fsReader.Position); } else { bSize = segmentSize - fsWriter.Position; } } else { if (fsWriter.Position + bufferSize < segmentSize) { bSize = bufferSize; } else { bSize = segmentSize - ((int)fsWriter.Position); } } } if (currentPart == 1 && !fBPass) { if (bSize > hLen) { bSize -= hLen; } fBPass = true; } bReader.Read(buffer, 0, (int)bSize); bWriter.Write(buffer, 0, (int)bSize); subProgress = GetPecent(fsWriter.Position, realSegmentSize); progress = GetPecent(fsReader.Position, fileSize); segSize += bSize; } pSizes.Add(segSize); subProgress = 100; fsWriter.Close(); bWriter.Close(); count++; } subProgress = 0; progress = 0; buffer = null; gc.Free(); GC.Collect(); fsReader.Close(); bReader.Close(); GenerateSfx(); isRunning = false; } catch (IOException ex) { buffer = null; //gc.Free(); GC.Collect(); if (fsWriter != null) { fsWriter.Close(); fsWriter.Dispose(); } if (bWriter != null) { bWriter.Close(); } if (fsReader != null) { fsReader.Close(); fsReader.Dispose(); } if (bReader != null) { bReader.Close(); } splitMessage = ex.Message; isRunning = false; } }