Convertir archivo a bytes y viceversa

Estoy tratando de hacer una aplicación que me convierta por ejemplo un archivo de audio a bytes para poder guardar esa información en una base de datos y posteriormente esa información transformarla de nuevo al formato de archivo original.

Me puede asesorar de que función o método utilizar. Manejo visual basic.net 2010

Respuesta
1

Primero debes leer el archivo en un Stream

Imports System.IO Public Class

. . .

Dim sr As StreamReader sr = New StreamReader("c:\Test.txt")

txtOut.Text = sr.ReadToEnd

sr.Close()

Luego tomas el Stream y lo conviertes al array de bytes:

Private Function GetStreamAsByteArray(ByVal stream As System.IO.Stream) As Byte()
Dim streamLength As Integer = Convert.ToInt32(stream.Length)
Dim fileData As Byte() = New Byte(streamLength) {}
' Read the file into a byte array
stream.Read(fileData, 0, streamLength)
stream.Close()
Return fileData
End Function

antes que nada agradezco su respuesta. solo que tengo unas dudas.

'este pasa el archivo a un stream

Dim sr As StreamReader sr = New StreamReader("c:\Test.txt")
txtOut.Text = sr.ReadToEnd
sr.Close()

'este código convierte el stream a un array

Private Function GetStreamAsByteArray(ByVal stream As System.IO.Stream) As Byte()
Dim streamLength As Integer = Convert.ToInt32(stream.Length)
Dim fileData As Byte() = New Byte(streamLength) {}
' Read the file into a byte array
stream.Read(fileData, 0, streamLength)
stream.Close()
Return fileData
End Function

DUDAS:

-como llamaría a la función, es decir cual seria el parámetro que enviaría.

-como transformo el array de bytes al formato de archivo original

-y como enviar el archivo ya transformado a un directorio.

de nuevo gracias, soy estudiante y pues quiero presentar un ensayo de este tema.

saludos.

La función es tu código, lo que tu creas, lo que tu codifiques.

Para transformar el array al archivo original, en vez de stream. Read, es stream.Write

Al grabar el Stream le indicas en que ruta y nombre equedara el archivo

hola que tal experto, en verdad me esta ayudando mucho. espero estar captando bien la idea. en un botón en el evento clic, coloque lo siguiente:

sr = New StreamReader("d:\test.txt")
txtOut.Text = sr.ReadToEnd
sr.Close()

'aquí llamo a la función y me indica que el sytem.io.streamreader no puede convertirse en system.io.stream.

GetStreamAsByteArray(sr)

nota: ya importe la biblioteca system.io y también y declare la variable sr.

gracias por su ayuda

Debes llamar la función antes de hacer el sr.Close(), ademas si ese es tu código, recuerda tu archivo no es un txt es otro tipo de archivo y debes colocarlo de manera correcta.

hola experto, lo he colocado antes del sr.close y aun me marca el error. es el único que me marca. todo lo demás aparece correcto.

:(

Prueba con esto:

GetStreamAsByteArray((Stream)sr)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas