Buenas, estoy en VB2008 volviéndome loco... a ver, me gustaría saber cómo se relacionan los métodos 'WriteAllText" y "WriteAllBytes", y sus respectivos para leer, en My.Computer.FileSystem.
Es que a la hora de escribir y leer obtengo cosas a veces iguales y a veces diferentes, pero en general en la conversión dejan de ser idénticos los archivos.... me explico con mi caso:
Quiero guardar texto con una imagen, todo junto en un mismo archivo. He encontrado unas funciones muy útiles para el tema de las imágenes, ya que realizan la conversión de una imagen a una matriz de bytes, y viceversa, y así lo hago todo por código. Estas son:
Código:
Shared Function Imagen_Bytes(ByVal Foto As Image) As Byte()
If Not Foto Is Nothing Then
Dim Codi As New IO.MemoryStream
Foto.Save(Codi, Imaging.ImageFormat.Png)
Return Codi.GetBuffer
Else
Return Nothing
End If
End Function
Shared Function Bytes_Imagen(ByVal Foto As Byte()) As Image
If Not Foto Is Nothing Then
Dim Codi As New IO.MemoryStream(Foto)
Dim resultado As Image = Image.FromStream(Codi)
Return resultado
Else
Return Nothing
End If
End Function
Bien, a la hora de grabar, obtengo la matriz de bytes a partir de la imagen. Pero como tengo también texto, y tengo que unir texto y una matriz de bytes, tengo que pasarlo todo a un mismo tipo. Entonces hago:
Código:
Dim Conv = New System.Text.ASCIIEncoding
Dim Cadena as String
Cadena = Conv.GetString(ArrayBytes)
Con lo que convierto el array de bytes en un string, usando una codificación ascii.
Bueno, pues ya haga lo que haga, si grabo con WriteAllBytes o con WriteAllText, o convierta de String a matriz de bytes, o viceversa, cuando leo, de cualquier manera, y vuelvo a convertir, de cualquier manera también, no consigo obtener exactamente la misma información, pues ahora cuando intento volver a formar la imagen me da un error, y eso no pasa si la matriz de bytes está bien.
Perdón por el rollo. Bueno, a ver si sabéis algo. Muchas gracias.
Salu00000010!!!