我有一个循环,可以将我的资源中的视频(My.Resources。 file )保存到路径中(在这种情况下,它是C:\ Users * username * \ AppData \ Local \ Temp *视频编号* .avi)。这个循环将持续我在资源中的10个视频,它将所有这些视频保存到同一个路径。 这是我的代码:
Sub SaveAllVideos()
Dim x As Integer
Dim y As Object
Dim z As Object
Do Until x = 11
x += 1
y = "My.Resources." & "_" & x
z = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Temp\" & x & ".avi"
Dim b As Byte() = y
My.Computer.FileSystem.WriteAllBytes(z, y, False)
Loop
End Sub
问题出在
Dim b As Byte() = y
我将得到“InvalidCastException。附加信息:无法将'System.String'类型的对象强制转换为'System.Byte []'。”。这样做:
Dim b As Byte() = My.Resources.*resource*
工作正常,所以我不确定为什么我的工作无效,因为y是“My.Resources ._ number ”。那么,任何人都可以帮助我吗?也许解释为什么我做的不起作用?
编辑:尝试以某种方式将字符串转换为字节(如评论中所述),现在我在这里:
y = "My.Resources." & "_" & x
Dim w As Byte() = System.Text.Encoding.Default.GetBytes(y)
My.Computer.FileSystem.WriteAllBytes(z, w, False)
这会运行并保存视频,但它只包含文本“My.Resources._1”。有人帮助过任何人吗?
EDIT2:我自己解决了这个问题,这是我的最终代码
Sub SaveAllVideos()
Dim x As Integer
Dim y As Object
Dim z As Object
Do Until x = 10
x += 1
y = My.Resources.ResourceManager.GetObject("_" & x)
z = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Temp\" & x & ".avi"
Dim b As Byte() = y
My.Computer.FileSystem.WriteAllBytes(z, b, False)
Loop
End Sub
答案 0 :(得分:0)
Dim b As Byte() = y
应该是
Dim b As Byte() = My.Properties.Resources.ResourceManager.GetObject(y)