Copiar Archivo

16/03/2005 - 11:21 por e-lores | Informe spam
Quiero copiar un archivo bastante grande y me gustaría poder ir informando
al usuario del estado del proceso (como hace Windows)

He descartado el File.Copy() por que no me informa del estado y he intentado
lo siguiente:

FileStream fsInput = new FileStream("prueba.xls", FileMode.Open);
FileStream fsOutput = new FileStream("copia.xls", FileMode.Create);

BinaryReader br = new BinaryReader(fsInput);
BinaryWriter bw = new BinaryWriter(fsOutput);

while(br.PeekChar() > -1 )
{
bw.Write(br.ReadByte());
bw.Flush();
}

br.Close();
bw.Close();

Para archivo de pocas K funciona pero si supera las 64 me salta una
excepción (Desboradmiento del búfer de conversión)

¿Alguién sabe como solucionarlo? Cualquier otra forma de hacer lo que quiero
ya me iría bien.

Gracias.
Ernesto Lores.

Preguntas similare

Leer las respuestas

#1 A.Poblacion
16/03/2005 - 11:32 | Informe spam
"e-lores" wrote in message
news:
Quiero copiar un archivo bastante grande y me gustaría poder ir informando
al usuario del estado del proceso (como hace Windows)

He descartado el File.Copy() por que no me informa del estado y he


intentado
lo siguiente:

FileStream fsInput = new FileStream("prueba.xls", FileMode.Open);
FileStream fsOutput = new FileStream("copia.xls", FileMode.Create);

BinaryReader br = new BinaryReader(fsInput);
BinaryWriter bw = new BinaryWriter(fsOutput);

while(br.PeekChar() > -1 )
{
bw.Write(br.ReadByte());
bw.Flush();
}

br.Close();
bw.Close();

Para archivo de pocas K funciona pero si supera las 64 me salta una
excepción (Desboradmiento del búfer de conversión)

¿Alguién sabe como solucionarlo? Cualquier otra forma de hacer lo que


quiero
ya me iría bien.



Prueba asi:

const int tamBuf = 1048576;
byte[] buf = new byte[tamBuf];

FileStream fsl = new FileStream(archivoALeer, FileMode.Open,
FileAccess.Read);
FileStream fso = new FileStream(archivoAGrabar, FileMode.CreateNew,
FileAccess.Write);

int nLeidos;
do
{
nLeidos = fsl.Read(buf, 0, tamBuf);
if (nLeidos>0)
fso.Write(buf, 0, nLeidos);
} while (nLeidos>0)

fso.Close();
fsl.Close();
Respuesta Responder a este mensaje
#2 e-lores
16/03/2005 - 11:58 | Informe spam
Funciona.

Muchas gracias.

"A.Poblacion" escribió en
el mensaje news:
"e-lores" wrote in message
news:
Quiero copiar un archivo bastante grande y me gustaría poder ir
informando
al usuario del estado del proceso (como hace Windows)

He descartado el File.Copy() por que no me informa del estado y he


intentado
lo siguiente:

FileStream fsInput = new FileStream("prueba.xls", FileMode.Open);
FileStream fsOutput = new FileStream("copia.xls", FileMode.Create);

BinaryReader br = new BinaryReader(fsInput);
BinaryWriter bw = new BinaryWriter(fsOutput);

while(br.PeekChar() > -1 )
{
bw.Write(br.ReadByte());
bw.Flush();
}

br.Close();
bw.Close();

Para archivo de pocas K funciona pero si supera las 64 me salta una
excepción (Desboradmiento del búfer de conversión)

¿Alguién sabe como solucionarlo? Cualquier otra forma de hacer lo que


quiero
ya me iría bien.



Prueba asi:

const int tamBuf = 1048576;
byte[] buf = new byte[tamBuf];

FileStream fsl = new FileStream(archivoALeer, FileMode.Open,
FileAccess.Read);
FileStream fso = new FileStream(archivoAGrabar, FileMode.CreateNew,
FileAccess.Write);

int nLeidos;
do
{
nLeidos = fsl.Read(buf, 0, tamBuf);
if (nLeidos>0)
fso.Write(buf, 0, nLeidos);
} while (nLeidos>0)

fso.Close();
fsl.Close();


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