由文件最基本的元素发明出来的文件拆解技术
vb.net吧
全部回复
仅看楼主
level 7
暴牙归来 楼主
前天我想到文件是由最基本的二进制数组成的联想到能否借助文件最基本的组成原理将文件拆解成由二进制数字写成的文本文件从而解决一些文件无法发送的尴尬(例如邮箱中的附件传输,网盘中的文件传输等)。于是我在网上搜。终于找到了符合自己的方案。
我的思路是:将文件转换成一个由二进制数组成的一维数组并写入几个体积很小的文本文件。等需要的时候再将文本文件写入数组并还原成文件
2022年12月19日 07点12分 1
level 7
暴牙归来 楼主
将文件转换成二进制数组代码(根据目标尺寸自动切割,以QQ邮箱为例):
'If filesize > 4 * 1024 * 1024 Then
'Dim filecount As Integer = Int(filesize / (4 * 1024 * 1024)) + 1
'My.Forms.切割文件.ProgressBar2.Maximum = filecount
'My.Forms.切割文件.ProgressBar2.Minimum = 0
Dim filebyte As Int64 = 0
Dim coventfile As coventfile = New coventfile
Dim filebytes() As Byte = coventfile.File2Bytes(filepath)
My.Forms.切割文件.Show()
'For i As Integer = 0 To filecount
'My.Forms.切割文件.ProgressBar2.Value = i + 1
My.Forms.切割文件.ProgressBar1.Maximum = filebytes.Length
My.Forms.切割文件.ProgressBar1.Minimum = 0
Dim sw As System.IO.StreamWriter
sw = IO.File.CreateText("F:\space craft\火\文件传输尺寸限制终结者(邮件版)\切割文件1.txt")
'sr = IO.File.CreateText("F:\space craft\火\文件传输尺寸限制终结者(邮件版)\切割文件" & i + 1 & ".txt")
For Each bit As Byte In filebytes
My.Forms.切割文件.ProgressBar1.Value = filebyte
sw.Write(bit)
filebyte += 1
Next
sw.Close()
'Next
MsgBox("文件切割成功!!!")
'End If
2022年12月19日 07点12分 2
level 7
暴牙归来 楼主
还原文件代码:
istr = 1
Dim filepath As String = Me.OpenFileDialog1.FileName
textinfo = System.IO.File.ReadAllText(filepath, System.Text.Encoding.Default)
sr = IO.File.OpenText(filepath)
Me.ProgressBar1.Maximum = textinfo.Length
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Value = istr
Me.Timer1.Interval = 1
Me.Timer1.Start()
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If sr.Peek <> -1 Then
Dim lines As String = sr.ReadLine
For Each s As String In lines
Me.ProgressBar1.Value = istr
bytes(istr) = s
istr += 1
ReDim bytes(istr)
Next
Else
Me.Timer1.Stop()
sr.Close()
Bytes2File(bytes, "F:\space craft\火\文件传输尺寸限制终结者(邮件版)\被还原的文件.mp4")
MsgBox("还原成功")
End If
End Sub
2022年12月19日 08点12分 3
1