Friday, November 17, 2006

Menguraikan File Besar Menjadi Kecil

Untuk mengecilkan file dengan menggunakan Visual Basic, gampang kok...yang penting EnTe2 semua bisa dan familiar dengan Bahasa Pemrograman Visual Basic, versi apa ajah, terutama tentang fungsi API dan Pembuatan modul, so..neh dia source code nya, ente cuma perlu satu buah form ajah sekedar buat latihan, selainnya bisa loe kembangin sendiri deh biar jadi program yang lebih baik.. (gue sadur dari vbbego comunity neh : tebe)


Option Explicit

Function SplitFile(nPath As String, nFileName As String, _
SizePerFile As Long) As Boolean

On Error GoTo Salah
Dim LenFile As Long ' Ukuran file
Dim CountFile As Long ' Jumlah File
Dim LastSize As Long ' Ukuran File Terakhir, jika ada
Dim CntOfFile As Long ' Loop variable
Dim PosFile As Long ' Posisi pointer file
Dim inBatch As String ' Membuat batch commAnd untuk penggabungan kembali
Dim unsplitDir As String ' Direktori hasil penguraian
Dim Data() As Byte ' Data pada file yang diambil

'/ Periksa apakah karakter terakhir adalah '\'
nPath = Iif(Right(nPath, 1) = "\", nPath, nPath & "\")
'/ Ambil ukuran file yang akan diuraikan
LenFile = FileLen(nPath & nFileName)
'/ Bagi ukuran file dengan besar file yang akan di uraikan
CountFile = Fix(LenFile / SizePerFile)
'/ Apakah ada yang tersisa pada pembagian file
LastSize = LenFile - (SizePerFile * CountFile)

'/ Beri nilai awal pointer file dengan nilai 1
PosFile = 1
'/ Buat direktori untuk penguraian file
unsplitDir = nPath & "unsplit_" & nFileName & "\"
If Dir(unsplitDir, vbNormal + vbDirectory) = "" Then MkDir unsplitDir

'/ Buka file yang akan diuraikan dengan binary Type
Open nPath & nFileName For Binary As #1
'/ Buat file batch dengan nama 'unsplit.bat'
Open unsplitDir & "unsplit.bat" For Output As #2
'/ Cetak header batch file
Print #2, "@echo off"
Print #2, "echo SpliFile Created 2005 by vbBeGo Team"
Print #2, "echo Reading split files..."
Print #2, "pause"

'/ Lakukan pengulangan sebanyak jumlah file yg diuraikan
For CntOfFile = 1 To CountFile
'/ lakukan Dim ulang sesuai dengan besar file yang akan diurakan
ReDim Data(1 To SizePerFile) As Byte
'/ Ambil data pada file sesuai dengan posisi pointer
Get #1, PosFile, Data
'/ Buat bagian2 file baru, hasil penguraian
Open unsplitDir & Format(CntOfFile, "00#") & ".spl" For Binary As #3
Put #3, , Data
Close #3
'/ Buat batch commAnd untuk nantinya digunakan sebagai penggabungan
inBatch = inBatch & Format(CntOfFile, "00#") & ".spl" & " + "
'/ Tambahkan posisi pointer sebesar ukuran file yang diuraikan
PosFile = PosFile + SizePerFile
Next CntOfFile

'/ Periksa apakah ada sisa pada saat penguraian dilakukan
If LastSize > 0 Then
'/ jika ya maka, reDim data sebanyak jumlah yg tersisa
ReDim Data(1 To LastSize) As Byte
Get #1, PosFile, Data
Open unsplitDir & Format(CntOfFile, "00#") & ".spl" For Binary As #3
Put #3, , Data
Close #3
inBatch = inBatch & Format(CntOfFile, "00#") & ".spl" & " + "
End If
inBatch = Mid(inBatch, 1, Len(inBatch) - 3)
'/ Cetak perintah pada batch file
Print #2, "copy /b " & inBatch & " " & Chr(34) & nFileName & Chr(34)
Close #2
Close #1
SplitFile = True
Salah:
End Function

Private Sub Form_Load()
If SplitFile("C:\", "Server2.exe", 102400) Then ' 100KB
MsgBox "penguraian file berhasil", 64
Else
MsgBox "penguraian file gagal", 16
End If
End
End Sub

No comments: