leer escribir en Binary

12/03/2010 - 19:57 por Paul P. Garcia | Informe spam
Saludos.
Si me pudieran ayudar en lo siguiente:
private void button1_Click(object sender, EventArgs e)

{

string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";

FileStream stream = new FileStream(filename
,FileMode.Create,FileAccess.Write );

BinaryWriter write = new BinaryWriter(stream);

Int32 mVariable = textBox1.TextLength;

Int32 mVar1;

Byte[] mBuffer = System.IO.File.ReadAllBytes("C:\\Documents and
Settings\mollo\\Escritorio\\coop catedral ultimo.doc");

mVar1=mBuffer.Length;

write.Write(mVariable);

write.Write(textBox1.Text);

write.Write(mVar1);

write.Write(mBuffer);

write.Close();

stream.Close();

textBox1.Text=System.Convert.ToString(mVariable);

}

private void button2_Click(object sender, EventArgs e)

{

FileStream readStream = new FileStream("C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt", FileMode.Open);

BinaryReader readBinary = new BinaryReader(readStream);

Int32 mVar = readBinary.ReadInt32();

byte[] theContent = new byte[mVar];

//Porque me obligo aumentar una posicion en algunas ocaciones 2

readBinary.BaseStream.Position = readBinary.BaseStream.Position + 1;

theContent = readBinary.ReadBytes(mVar);

Int32 mVar1 = readBinary.ReadInt32();

FileStream stream = new FileStream("C:\\Documents and
Settings\mollo\\Escritorio\\word.docx", FileMode.Create,
FileAccess.Write);

BinaryWriter writer = new BinaryWriter(stream);

textBox1.Text = Encoding.ASCII.GetString(theContent);

writer.Write(readBinary.ReadBytes(mVar1));

stream.Close();

writer.Close();

readStream.Close();

readBinary.Close();

}

}

Pense que automatico recuperaba y se movia una posicion.
Porque tengo que aumentar una posicion "readBinary.BaseStream.Position =
readBinary.BaseStream.Position + 1;" ????????
En algunos casos debo aumentar 2 posiciones.
No se cuando aumentar 1 o dos posiciones, porque si no lo habo bien lo
recupero mal...

Preguntas similare

Leer las respuestas

#1 Paul P. Garcia
15/03/2010 - 19:56 | Informe spam
Estoy buscando en google, pero no encuentra nada que me pueda ayudar...
Solo espero que alguien me pueda ayudar...
Respuesta Responder a este mensaje
#2 Sashka
16/03/2010 - 15:17 | Informe spam
El código que has publicado está difícil de leer.
Acá tienes un tutorial (en inglés pero bastante claro)
http://dotnetperls.com/binaryreader

Sashka

"Paul P. Garcia" escribió en el mensaje de
noticias:
Saludos.
Si me pudieran ayudar en lo siguiente:
private void button1_Click(object sender, EventArgs e)

{

string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";

FileStream stream = new FileStream(filename
,FileMode.Create,FileAccess.Write );

BinaryWriter write = new BinaryWriter(stream);

Int32 mVariable = textBox1.TextLength;

Int32 mVar1;

Byte[] mBuffer = System.IO.File.ReadAllBytes("C:\\Documents and
Settings\mollo\\Escritorio\\coop catedral ultimo.doc");

mVar1=mBuffer.Length;

write.Write(mVariable);

write.Write(textBox1.Text);

write.Write(mVar1);

write.Write(mBuffer);

write.Close();

stream.Close();

textBox1.Text=System.Convert.ToString(mVariable);

}

private void button2_Click(object sender, EventArgs e)

{

FileStream readStream = new FileStream("C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt", FileMode.Open);

BinaryReader readBinary = new BinaryReader(readStream);

Int32 mVar = readBinary.ReadInt32();

byte[] theContent = new byte[mVar];

//Porque me obligo aumentar una posicion en algunas ocaciones 2

readBinary.BaseStream.Position = readBinary.BaseStream.Position + 1;

theContent = readBinary.ReadBytes(mVar);

Int32 mVar1 = readBinary.ReadInt32();

FileStream stream = new FileStream("C:\\Documents and
Settings\mollo\\Escritorio\\word.docx", FileMode.Create,
FileAccess.Write);

BinaryWriter writer = new BinaryWriter(stream);

textBox1.Text = Encoding.ASCII.GetString(theContent);

writer.Write(readBinary.ReadBytes(mVar1));

stream.Close();

writer.Close();

readStream.Close();

readBinary.Close();

}

}

Pense que automatico recuperaba y se movia una posicion.
Porque tengo que aumentar una posicion "readBinary.BaseStream.Position =
readBinary.BaseStream.Position + 1;" ????????
En algunos casos debo aumentar 2 posiciones.
No se cuando aumentar 1 o dos posiciones, porque si no lo habo bien lo
recupero mal...

Respuesta Responder a este mensaje
#3 Paul P. Garcia
16/03/2010 - 21:48 | Informe spam
Hola.
Gracias por tu respuesta...
Mi aplicacion es de prueba, en el estoy usando 2 botones (button1, button2)
y una caja de texto (textBox1)
El codigo completo es:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";
FileStream stream = new FileStream(filename
,FileMode.Create,FileAccess.Write );
BinaryWriter write = new BinaryWriter(stream);
Int32 mVariable = textBox1.TextLength;
Int32 mVar1;

Byte[] mBuffer = System.IO.File.ReadAllBytes("C:\\Documents and
Settings\mollo\\Escritorio\\coop catedral ultimo.doc");
mVar1=mBuffer.Length;
write.Write(mVariable);
write.Write(textBox1.Text);
write.Write(mVar1);
write.Write(mBuffer);
write.Close();
stream.Close();
textBox1.Text=System.Convert.ToString(mVariable);
}

private void button2_Click(object sender, EventArgs e)
{
FileStream readStream = new FileStream("C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt", FileMode.Open);
BinaryReader readBinary = new BinaryReader(readStream);
Int32 mVar = readBinary.ReadInt32();
byte[] theContent = new byte[mVar];
//Porque me obligo aumentar una posicion en algunas ocaciones 2
readBinary.BaseStream.Position = readBinary.BaseStream.Position
+ 2;
theContent = readBinary.ReadBytes(mVar);
Int32 mVar1 = readBinary.ReadInt32();

FileStream stream = new FileStream("C:\\Documents and
Settings\mollo\\Escritorio\\word.docx", FileMode.Create,
FileAccess.Write);
BinaryWriter writer = new BinaryWriter(stream);
textBox1.Text = Encoding.ASCII.GetString(theContent);
writer.Write(readBinary.ReadBytes(mVar1));

stream.Close();
writer.Close();
readStream.Close();
readBinary.Close();
}
}
}

Estudio la informacion que me muestras y te comento. Mientras tanto te estoy
enviado mi aplicacion de prueba, para que lo puedas ver y mostrarme en donde
estoy cometiendo el error.
Gracias.
Respuesta Responder a este mensaje
#4 Paul P. Garcia
17/03/2010 - 15:26 | Informe spam
Hola.
Me voy a responder.
Al parecer el problema estaba que escribia como texto.
Byte[] mBuffer1 = Encoding.GetEncoding(850).GetBytes(textBox1.Text);
Al escribirlo como Byte no tengo problema.

Les paso el codigo completo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";
BinaryWriter write = new
BinaryWriter(File.Open(filename,FileMode.Create));
int mVariable = textBox1.TextLength;

Byte[] mBuffer = System.IO.File.ReadAllBytes("C:\\Documents and
Settings\mollo\\Escritorio\\coop catedral ultimo.doc");
int mVar1 = mBuffer.Length;
write.Write(mVariable);
Byte[] mBuffer1 =
Encoding.GetEncoding(850).GetBytes(textBox1.Text);
write.Write(mBuffer1);
write.Write(mVar1);
write.Write(mBuffer);
write.Close();
textBox1.Text=System.Convert.ToString(mVariable);
}

private void button2_Click(object sender, EventArgs e)
{
string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";
BinaryReader readBinary = new
BinaryReader(File.Open(filename,FileMode.Open));
int mVar = readBinary.ReadInt32();
byte[] theContent;
theContent = readBinary.ReadBytes(mVar);
int mVar1 = readBinary.ReadInt32();

string filename1 = "C:\\Documents and
Settings\mollo\\Escritorio\\word.docx";
BinaryWriter writer = new
BinaryWriter(File.Open(filename1,FileMode.Create));
textBox1.Text = Encoding.GetEncoding(850).GetString(theContent);
writer.Write(readBinary.ReadBytes(mVar1));

writer.Close();
readBinary.Close();
}
}
}
Respuesta Responder a este mensaje
#5 Sashka
17/03/2010 - 21:36 | Informe spam
;) que bien que pudiste resolverlo!

Sashka

"Paul P. Garcia" escribió en el mensaje de
noticias:#
Hola.
Me voy a responder.
Al parecer el problema estaba que escribia como texto.
Byte[] mBuffer1 = Encoding.GetEncoding(850).GetBytes(textBox1.Text);
Al escribirlo como Byte no tengo problema.

Les paso el codigo completo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";
BinaryWriter write = new
BinaryWriter(File.Open(filename,FileMode.Create));
int mVariable = textBox1.TextLength;

Byte[] mBuffer = System.IO.File.ReadAllBytes("C:\\Documents and
Settings\mollo\\Escritorio\\coop catedral ultimo.doc");
int mVar1 = mBuffer.Length;
write.Write(mVariable);
Byte[] mBuffer1 =
Encoding.GetEncoding(850).GetBytes(textBox1.Text);
write.Write(mBuffer1);
write.Write(mVar1);
write.Write(mBuffer);
write.Close();
textBox1.Text=System.Convert.ToString(mVariable);
}

private void button2_Click(object sender, EventArgs e)
{
string filename = "C:\\Documents and
Settings\mollo\\Escritorio\\prueba.txt";
BinaryReader readBinary = new
BinaryReader(File.Open(filename,FileMode.Open));
int mVar = readBinary.ReadInt32();
byte[] theContent;
theContent = readBinary.ReadBytes(mVar);
int mVar1 = readBinary.ReadInt32();

string filename1 = "C:\\Documents and
Settings\mollo\\Escritorio\\word.docx";
BinaryWriter writer = new
BinaryWriter(File.Open(filename1,FileMode.Create));
textBox1.Text =
Encoding.GetEncoding(850).GetString(theContent);
writer.Write(readBinary.ReadBytes(mVar1));

writer.Close();
readBinary.Close();
}
}
}


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida