none
文件操作 RRS feed

  • 问题

  • 大家好! 我想用二进制读写文件; 首先,把文件用io.stream读出来,然后赋值给byte 类型的b()上,(dim b()as byte)然后把b(i)从零开始写,把b(i)的值写到richtextbox上,写完为止。然后把richtextbox上的值复制下来。 然后把复制写来的值赋值给一个string字符串上(如:x)。dim i as integer=0,然后用mid(x,i+1,0)把值赋给另外一个byte上(如:dim a() as byte)至到赋值完为止。然后把a用数据流写,然后放到规定的位置。 我想这种方法应该可以的。但是不知道为什么做了半天做不成。。。难道我的想法有错误吗?大家帮个忙。。。我不想把文件显示在资源文件里。。。没有那个文件的前提下用代码放回到规定的目录下。。。。谢谢。。。 例如:有一个字体文件。。。代码里面只有这个字体文件的二进制数。。。然后通过数据流或者是别的办法把文件从二进制变成可以用的文件。。。呵呵。。。谢谢大家。。。。
    muradil
    2009年4月15日 3:29

答案

  • 读出写回的数据要一致

    Dim fs As New FileStream("C:\WINDOWS\Fonts\ARIAL.ttf", FileMode.Open, FileAccess.Read)
            Dim MyData(fs.Length) As Byte
            fs.Read(MyData, 0, fs.Length)
            Dim a() As Byte = MyData
            Dim index As String = ""
            Dim i As Long
            
            RichTextBox1.Text = Convert.ToBase64String(a)
            MsgBox("完成!", , "")
    
            Dim stm As New IO.FileStream("C:\muradil.ttf", IO.FileMode.Create, IO.FileAccess.Write)
            Dim sw As New IO.BinaryWriter(stm, System.Text.Encoding.UTF8)
            sw.Write(Convert.FromBase64String(RichTextBox1.Text))
            fs.Close() : sw.Close()
            MsgBox("完成!", , "")

    http://feiyun0112.cnblogs.com/
    2009年4月16日 1:11
    版主

全部回复

  • 把string 写到流  请不要用mid(x,i+1,0)


     

    Dim stm As New IO.FileStream("path", IO.FileMode.Create, IO.FileAccess.Write)

     

    Dim sw As New IO.StreamWriter(stm, Text.Encoding.UTF8)

    sw.Write(

    "text")

    sw.Close()


    工作突然有点忙 嘿嘿
    2009年4月15日 3:56
  • 你比较一下b()和a()

    我不知道你是怎么赋到数组的

    至少要mid(x,i+1,1)吧

    字符"0"怎么变成byte的?


    http://feiyun0112.cnblogs.com/
    2009年4月15日 4:06
    版主
  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fs As New FileStream _ ("C:\WINDOWS\Fonts\UKIJTzTrBold.ttf", FileMode.OpenOrCreate, _ FileAccess.Read) Dim MyData(fs.Length) As Byte fs.Read(MyData, 0, fs.Length) Dim a() As Byte = MyData Dim index As String = "" Dim i As Long For i = 0 To fs.Length - 1 index = index & a(i) Next RichTextBox1.Text = index MsgBox("完成!", , "") Dim stm As New IO.FileStream("C:\Documents and Settings\Administrator\桌面\muradil.ttf", IO.FileMode.Create, IO.FileAccess.Write) Dim sw As New IO.StreamWriter(stm, System.Text.Encoding.UTF8) sw.Write(RichTextBox1.Text) fs.Close() : sw.Close() MsgBox("完成!", , "") End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim fs As New FileStream _ ("C:\WINDOWS\Fonts\ARIAL.TTF", FileMode.OpenOrCreate, _ FileAccess.Read) Dim MyData(fs.Length) As Byte fs.Read(MyData, 0, fs.Length) Dim a() As Byte = MyData Dim index As String = System.Text.Encoding.UTF8.GetString(MyData) 'Dim i As Long 'For i = 0 To fs.Length - 1 'index = index & a(i) ' Next RichTextBox1.Text = index MsgBox("完成!", , "") Dim stm As New IO.FileStream("C:\Documents and Settings\Administrator\桌面\muradil.ttf", IO.FileMode.Create, IO.FileAccess.Write) Dim sw As New IO.StreamWriter(stm, System.Text.Encoding.UTF8) sw.Write(RichTextBox1.Text) fs.Close() : sw.Close() MsgBox("完成!", , "") End Sub 这两种方法都不行啊。。。。大家帮个忙。。。。
    muradil
    2009年4月16日 0:44
  • 读出写回的数据要一致

    Dim fs As New FileStream("C:\WINDOWS\Fonts\ARIAL.ttf", FileMode.Open, FileAccess.Read)
            Dim MyData(fs.Length) As Byte
            fs.Read(MyData, 0, fs.Length)
            Dim a() As Byte = MyData
            Dim index As String = ""
            Dim i As Long
            
            RichTextBox1.Text = Convert.ToBase64String(a)
            MsgBox("完成!", , "")
    
            Dim stm As New IO.FileStream("C:\muradil.ttf", IO.FileMode.Create, IO.FileAccess.Write)
            Dim sw As New IO.BinaryWriter(stm, System.Text.Encoding.UTF8)
            sw.Write(Convert.FromBase64String(RichTextBox1.Text))
            fs.Close() : sw.Close()
            MsgBox("完成!", , "")

    http://feiyun0112.cnblogs.com/
    2009年4月16日 1:11
    版主
  • 太谢谢你了。。。。爱死你了。。。哈哈。。。谢谢


    muradil
    2009年4月16日 5:22