Visual Basic.NET 7.x (2002/03)Visual Basic 9 (2008)Visual Basic 8 (2005)IntermediateDevWindows.NETVisual Basic
Folder Coder
A way to convert a folder into a file...
The beginning...
Well, it's all my sister's fault... she told me she'd give me an 'Independent' sign if I make her an app that locks folders... so what could I do...?
The code
Basically, this is the code that I use to encode a selected folder...
Private Sub Code()
Try
'prepares the writer to write
Dim fs As New FileStream("C:\Mitio\Locked.log",
FileMode.Append)
Dim sw As New StreamWriter(fs)
' sets the progressbar max value
ProgressBar1.Maximum = lb.Items.Count
For Each obj As Object In lb.Items
Dim name As String = My.Computer.FileSystem.GetName(
obj.ToString)
Dim bytes() As Byte
' reads the bytes from the specified fie & stores them in
' the array
bytes = My.Computer.FileSystem.ReadAllBytes(obj.ToString)
Dim bn As Integer = bytes.Length ' gets the length of the bytes
' appends the bytes of the array to the newly created
' Locked.locked file
My.Computer.FileSystem.WriteAllBytes(
"C:\Mitio\Locked.Locked", bytes, True)
'writes the name of the file and the length of the
'binaries in it
sw.WriteLine(bn.ToString + "*" + name)
ProgressBar1.Value += 1 ' performs a step
Next
lb.Items.Clear() 'clears the list
sw.Close() 'closes the writer
fs.Close() 'and the file
ProgressBar1.Value = 0 ' resets the progressbar
Catch ex As Exception
' if anything happens, you will be gently informed :D
MsgBox(ex.Message)
End Try
End Sub
And I think there's not much to it...
And this is the code to decode the folder:
Private sub Decode()
Try
Dim bf As New FileStream("C:\Mitio\Locked.locked",
FileMode.Open, FileAccess.Read, FileShare.Inheritable)
Dim br As BinaryReader ' opens the LOCKED file
Dim sf As New FileStream("C:\Mitio\Locked.log",
FileMode.Open)
Dim sr As New StreamReader(sf) ' Opens the LOG file
Dim s As String = sr.ReadLine
lb.Items.Add(CObj(s))
While Not s Is "" ' adds all files from the LOG file
s = sr.ReadLine
If s = "" Then Exit While
lb.Items.Add(CObj(s))
End While
Label1.Text = lb.Items.Count
sr.Close() ' closes the LOG file
sf.Close()
Dim j As Integer = 0
br = New BinaryReader(bf)
Dim i As Integer = 0
pb2.Maximum = Label1.Text
For Each obj As Object In lb.Items
pb2.Value += 1 ' performs step
Dim ss() As String = obj.ToString.Split("*") 'spit
Dim bytes As Integer = ss(0) 'the binaries
Dim name As String = (ss(1)) 'and the filename
'creates a new file with the name from the list
Dim bf1 As New FileStream(txtOut.Text + name, FileMode.Append,
FileAccess.Write, FileShare.Write)
Dim bw As New BinaryWriter(bf1)
Try
For i = 1 To CInt(bytes)
'writes the number of bytes for each file
bw.Write(br.ReadByte())
Next
Catch ex As Exception
MsgBox(ex.Message) ' again if something happens...
End Try
bw.Close() 'close...
bf1.Close()
Next
br.Close() 'and close again
bf.Close()
lb.Items.Clear() 'clears the list again
pb2.Value = 0 ' resets the progressbar
Catch ex As Exception
MsgBox(ex.Message) 'ohh
End Try
End Sub
After all
It's not finished properly yet, but I'll keep in touch...