从资源复制时出错

Error copying from resources

从资源复制到 appdata 文件夹下的文件夹时:出现错误,但我没有发现代码中有任何错误..

Private Sub Help_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    File.WriteAllBytes(MainPath & "\Help.rtf", My.Resources.HelpRTF)

    Dim HelpRTF = (MainPath & "\Help.rtf")
    Helpbox.LoadFile(HelpRTF)
End Sub

HelpRTF是.rtf文件,MainPath%appdata%文件夹下的目录

错误:类型 'String' 的值无法转换为 'Byte()'。

错误发生在:My.Resources.HelpRTF

出现该错误的原因是 File.WriteAllBytes() 方法的第二个参数采用 Byte(),而不是 String。如果要将文本(String)写入文件,可以使用File.WriteAllText()方法。

由于 RTF 可以包含图像、文本等,将其视为文本可能会损坏它,不用说,可能会出现编码问题。因此,不使用 File.WriteAllText() 方法,而是将 HelpRTF 资源的 FileType 更改为 Binary 而不是 Text,如下所示:

之后,您可以按原样使用您的代码:

Private Sub Help_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    File.WriteAllBytes(MainPath & "\Help.rtf", My.Resources.HelpRTF)
    Dim HelpRTF = (SWinPath & "\Help.rtf")
    Helpbox.LoadFile(HelpRTF)
End Sub

参考文献: