0
Answer

File Splitter Problems

softairhk

softairhk

21y
1.6k
1
Hello! I have found a File Splitter coding from the website, but I found that it has a problem: The generated *.bat will be in this format e.g. demo.exe.bat Copy /B "F:\Temp\demo.exe.1"+"F:\Temp\demo.exe.2"+"F:\Temp\demo.exe.3" "F:\Temp\demo.exe" The problem is if I send the demo.exe.1, demo.exe.2, demo.exe.3 and demo.exe.bat to other user via FTP, then he must edit the demo.exe.bat again. So how to modify the following coding to change the generate demo.exe.bat to out as following: e.g. demo.exe.bat Copy /B "demo.exe.1"+"demo.exe.2"+"demo.exe.3" "demo.exe" //Open File private void Open() { OpenFileDialog openDlg = new OpenFileDialog(); openDlg.Filter = "All Files (*.*)|*.*|Winzip Files (*.zip)|*.zip|Winrar Files (*.rar)|*.rar|ISO Files (*.iso)|*.iso|Execute Files (*.exe)|*.exe|Install Files (*.msi)|*.msi"; openDlg.FileName = "" ; openDlg.CheckFileExists = true; openDlg.CheckPathExists = true; DialogResult res = openDlg.ShowDialog (); if(res == DialogResult.OK) { if( openDlg.FileName=="") MessageBox.Show("Unexpected file format","Error File Name",MessageBoxButtons.OK,MessageBoxIcon.Information ); else { txtFileName.Text =openDlg.FileName; btnSplit.Enabled =true; FileStream fr = new FileStream(txtFileName.Text,FileMode.Open, FileAccess.Read ); FileSize =fr.Length; { intFileSize.Text =((Convert.ToInt32(fr.Length))/1024/1024).ToString()+ "."+(Convert.ToInt32(fr.Length)%(1024*1024))/1024+"M"; intPecFileSize.Text =((Convert.ToInt32(fr.Length/2.0))/1024/1024).ToString()+ "."+(Convert.ToInt32(fr.Length/2.0)%(1024*1024))/1024+"M"; //doubleFileSize.Text =((Convert.ToInt32(fr.Length))/1024/1024).ToString()+ "."+(Convert.ToInt32(fr.Length)%(1024*1024))/1024+"M"; //doublePecFileSize.Text =((Convert.ToInt32(fr.Length/2.0))/1024/1024).ToString()+ "."+(Convert.ToInt32(fr.Length/2.0)%(1024*1024))/1024+"M"; } fr.Close(); } } } //Split File private void btnSplit_Click(object sender, System.EventArgs e) { int i; string strLog=""; btnSplit.Enabled =false; btnBrowse.Enabled =false; progressBar1.Minimum =1; progressBar1.Maximum =Convert.ToInt32(numericUpDown1.Value)+1; progressBar1.Value =1; FileStream fread = new FileStream(txtFileName.Text,FileMode.Open, FileAccess.Read); int filesize = Convert.ToInt32(fread.Length) /Convert.ToInt32(numericUpDown1.Value); StreamWriter fwrite = new StreamWriter(txtFileName.Text +".bat",false); strLog="Copy /B "; for(i=1;i<=Convert.ToInt32(numericUpDown1.Value);i++) { byte[] byteread=new byte[filesize] ; fread.Read(byteread,0,filesize); FileStream fw = new FileStream( txtFileName.Text +"." + i ,FileMode.CreateNew, FileAccess.Write); strLog =strLog + "\""+txtFileName.Text+"."+Convert.ToString(i)+"\"+"; foreach(byte bNext in byteread) fw.WriteByte(bNext) ; fw.Close(); progressBar1.Value=i; } if( fread.Length!=fread.Position ) { byte [] byteread=new byte[Convert.ToInt32(fread.Length) - filesize *(i-1)] ; fread.Read(byteread,0,Convert.ToInt32(fread.Length) -filesize*(i-1)); FileStream fw = new FileStream( txtFileName.Text +"." +i ,FileMode.CreateNew, FileAccess.Write); strLog =strLog +"\""+txtFileName.Text+"."+Convert.ToString(i)+"\""; foreach(byte bNext in byteread) fw.WriteByte(bNext) ; fw.Close(); } else { strLog =strLog.Substring(0,strLog.Length -2); strLog =strLog +"\""; } strLog =strLog +" \""+txtFileName.Text+"\""; fwrite.Write(strLog); fread.Close(); fwrite.Flush(); fwrite.Close(); progressBar1.Value =i; btnSplit.Enabled =true; btnBrowse.Enabled =true; MessageBox.Show("File Splitted Successfully!\n\nSplitted into:"+Convert.ToInt32(i-1)+" pieces!\n\n"+"Please run *.bat to merge the files!","Finished",MessageBoxButtons.OK,MessageBoxIcon.Information); } fm Softair