Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/02/2009, 17:54
auxsys
 
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 16 años, 9 meses
Puntos: 0
Archivos y conversión string<->byte

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!!!