Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.IO
Namespace FileCutter
'This class is used to call the actual file operation class.
Public Class Form1
Inherits Form
Public Sub New()
MyBase.New
InitializeComponent
Me.Text = "File cutter & assembler (upto 1.96 GB) by Suman Biswas"
End Sub
Private obj As FileHandling = New FileHandling
Private Sub btnSelectFile_Click(ByVal sender As Object, ByVal e As EventArgs)
Me.obj.SplitUp(Me.SelectFile, Integer.Parse(textBox1.Text))
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Me.obj.MargeUp(Me.SelectFile)
End Sub
Private Function SelectFile() As String
Dim fbd As OpenFileDialog = New OpenFileDialog
If (fbd.ShowDialog <> DialogResult.OK) Then
MessageBox.Show("No file selected")
Return ""
Else
Return fbd.FileName
End If
End Function
End Class
'Main file operation is done here.
Class FileHandling
Private sliceLen As Integer = (1024 * 1024)
Private counter As Integer = 0
Public Sub SplitUp(ByVal filename As String, ByVal fileSizeInMB As Integer)
" 0;"
buffer = "new"
br = "new"
slicelen = (" (int)br.BaseStream.Length;" _
> (Me.sliceLen * Me.counter))
If (br.BaseStream.Length _
> (Me.sliceLen _
* (Me.counter + 1))) Then
br.BaseStream.Read(buffer, 0, Me.sliceLen)
curFileName = (filename + ("." + Me.counter.ToString))
Else
Dim remainLen As Integer = (CType(br.BaseStream.Length,Integer) _
- (Me.sliceLen * Me.counter))
buffer = New Byte((remainLen) - 1) {}
br.BaseStream.Read(buffer, 0, remainLen)
curFileName = (filename + ("." _
+ (Me.counter.ToString + ".E")))
End If
If File.Exists(curFileName) Then
File.Delete(curFileName)
End If
File.WriteAllBytes(curFileName, buffer)
Me.counter = (Me.counter + 1)
br.Close
MessageBox.Show("File spilitted successfully")
End Sub
Public Sub MargeUp(ByVal firstFileName As String)
If (firstFileName.Length < 1) Then
Return
End If
Dim endPart As String = firstFileName
Dim orgFile As String = ""
orgFile = endPart.Substring(0, endPart.LastIndexOf("."))
endPart = endPart.Substring((endPart.LastIndexOf(".") + 1))
If (endPart = "E") Then
orgFile = orgFile.Substring(0, orgFile.LastIndexOf("."))
endPart = "0"
End If
If File.Exists(orgFile) Then
If (MessageBox.Show((orgFile + " already exists, do you want to delete it"), "", MessageBoxButtons.YesNo) = DialogResult.Yes) Then
File.Delete(orgFile)
Else
MessageBox.Show("File not assembled. Operation cancelled by user.")
Return
End If
End If
'Assembling starts from here
Dim bw As BinaryWriter = New BinaryWriter(File.Open(orgFile, FileMode.Append))
Dim nextFileName As String = ""
Dim buffer() As Byte = New Byte((bw.BaseStream.Length) - 1) {}
Dim counter As Integer = Integer.Parse(endPart)
While true
nextFileName = (orgFile + ("." + Me.counter.ToString))
If File.Exists((nextFileName + ".E")) Then
'Last slice
buffer = File.ReadAllBytes((nextFileName + ".E"))
bw.Write(buffer)
Exit While
Else
buffer = File.ReadAllBytes(nextFileName)
bw.Write(buffer)
End If
Me.counter = (Me.counter + 1)
End While
bw.Close
MessageBox.Show("File assebled successfully")
End Sub
End Class
End Namespace