Click here to Skip to main content
15,881,877 members
Articles / Programming Languages / Visual Basic

Folder Coder

Rate me:
Please Sign up or sign in to vote.
3.90/5 (6 votes)
11 Dec 2007CPOL 42K   560   39   7
A way to convert a folder into a file...

Image 1

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...

VB
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:

VB
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...

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Bulgaria Bulgaria
I was born in Plovdiv, Bulgaria in1991.

I began programming two years ago, and the firs language I encountered was Pascal. I got to know it very well, but five or six months ago I took up Visual Basic. I still study it, and as far as I can see I have a lot to do, befor I can develop serious apps and games.It's hard to study programming when you are in highschool... Pitty...
Dimitar Todorov, BG.

Comments and Discussions

 
GeneralGood Pin
ayman.metwally@gizasystems.com27-Jan-09 19:34
ayman.metwally@gizasystems.com27-Jan-09 19:34 
GeneralHmm Pin
peterchen11-Dec-07 9:07
peterchen11-Dec-07 9:07 
QuestionEver heard of ZIP files? Pin
Michael D Bray11-Dec-07 5:59
Michael D Bray11-Dec-07 5:59 
AnswerRe: Ever heard of ZIP files? Pin
jconwell11-Dec-07 6:55
jconwell11-Dec-07 6:55 
GeneralRe: Ever heard of ZIP files? Pin
Michael Sync12-Dec-07 15:39
Michael Sync12-Dec-07 15:39 
GeneralRe: Ever heard of ZIP files? Pin
jconwell3-Jan-08 5:28
jconwell3-Jan-08 5:28 
Every (most) binary formatted file type has a chunk of bytes at the beginning of its byte stream that identifies it. Zip files also have this header. Here is a link to pkzip's file header http://www.ta7.de/txt/computer/computer016.htm[^]

John Conwell

GeneralExplanations I had to do before... Pin
Buffalloy18-Jan-08 1:05
Buffalloy18-Jan-08 1:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.