Copiar ficheros de C: a un Servidor

13/01/2010 - 03:46 por Darhas | Informe spam
Hola a todos

Estoy copiando unos cuantos ficheros de C: a un Servidor.

El problema es que a Windows XP se le corta la conexión unos instante y
luego la recupera.

Si al programa le pilla el Corte cuando esta copiando da error.

Hay alguna manera de hacer que el Programa ReEstablezca la conexión, o al
menos, que se espere para copiar hasta que Windows XP reestablezca la
conexión.

Un saludo y gracias por todo
Darhas

Este es el código que utilizo para copiar, está sacado de las MSDN de
Microsoft:

private bool CopiarFichero(string DirectorioOrigen, string FicheroOrigen,
string DirectorioFinal, string FicheroFinal, bool SobreEscribir)
{
bool Correcto = false;
bool CorrectoOrigen = false;
bool CorrectoFINAL = false;

string fileName = FicheroOrigen;
string sourcePath = DirectorioOrigen;
string targetPath = DirectorioFinal;

// Use Path class to manipulate file and directory paths.
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath,
FicheroFinal);



// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}


if (System.IO.Directory.Exists(sourcePath))
{
string[] files = System.IO.Directory.GetFiles(sourcePath);

// Copy the files and overwrite destination files if they
already exist.
foreach (string s in files)
{
// Use static Path methods to extract only the file name
from the path.
if (SobreEscribir == true)
{
if (!System.IO.File.Exists(destFile))
{
System.IO.File.Delete(destFile);
System.IO.File.Copy(sourceFile, destFile);
Correcto = true;
}
}
else
{
if (!System.IO.File.Exists(destFile))
{
System.IO.File.Copy(sourceFile, destFile, true);
Correcto = true;
}
else
{
Correcto = false;
}
}
}
}
else
{
Console.WriteLine("Source path does not exist!");
Correcto = false;
}

// Keep console window open in debug mode.
//Console.WriteLine("Press any key to exit.");
//Console.ReadKey();

return (Correcto);
}

Preguntas similare

Leer las respuestas

#1 Darhas
14/01/2010 - 04:34 | Informe spam
Hola compañeros

De verdad nadie sabe como hacerlo??? Estoy desesperado :(



"Darhas" wrote:

Hola a todos

Estoy copiando unos cuantos ficheros de C: a un Servidor.

El problema es que a Windows XP se le corta la conexión unos instante y
luego la recupera.

Si al programa le pilla el Corte cuando esta copiando da error.

Hay alguna manera de hacer que el Programa ReEstablezca la conexión, o al
menos, que se espere para copiar hasta que Windows XP reestablezca la
conexión.

Un saludo y gracias por todo
Darhas

Este es el código que utilizo para copiar, está sacado de las MSDN de
Microsoft:

private bool CopiarFichero(string DirectorioOrigen, string FicheroOrigen,
string DirectorioFinal, string FicheroFinal, bool SobreEscribir)
{
bool Correcto = false;
bool CorrectoOrigen = false;
bool CorrectoFINAL = false;

string fileName = FicheroOrigen;
string sourcePath = DirectorioOrigen;
string targetPath = DirectorioFinal;

// Use Path class to manipulate file and directory paths.
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath,
FicheroFinal);



// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}


if (System.IO.Directory.Exists(sourcePath))
{
string[] files = System.IO.Directory.GetFiles(sourcePath);

// Copy the files and overwrite destination files if they
already exist.
foreach (string s in files)
{
// Use static Path methods to extract only the file name
from the path.
if (SobreEscribir == true)
{
if (!System.IO.File.Exists(destFile))
{
System.IO.File.Delete(destFile);
System.IO.File.Copy(sourceFile, destFile);
Correcto = true;
}
}
else
{
if (!System.IO.File.Exists(destFile))
{
System.IO.File.Copy(sourceFile, destFile, true);
Correcto = true;
}
else
{
Correcto = false;
}
}
}
}
else
{
Console.WriteLine("Source path does not exist!");
Correcto = false;
}

// Keep console window open in debug mode.
//Console.WriteLine("Press any key to exit.");
//Console.ReadKey();

return (Correcto);
}
Respuesta Responder a este mensaje
#2 RFOG
14/01/2010 - 09:57 | Informe spam
Mete ese código en un hilo para no parar tu programa, rodealo de más
bucles y varios bloques try/catch. Cuando se te produzca la interrupción
porque no ha podido copiar, pones un retardo variable (por ejemplo:
100*reintentos) y cuando lleves n reintentos aborta con error.

Pero lo mejor es que miréis por qué existen esos cortes de red...

On Thu, 14 Jan 2010 04:34:01 +0100, Darhas
wrote:

Hola compañeros

De verdad nadie sabe como hacerlo??? Estoy desesperado :(



"Darhas" wrote:

Hola a todos

Estoy copiando unos cuantos ficheros de C: a un Servidor.

El problema es que a Windows XP se le corta la conexión unos instante y
luego la recupera.

Si al programa le pilla el Corte cuando esta copiando da error.

Hay alguna manera de hacer que el Programa ReEstablezca la conexión, o
al
menos, que se espere para copiar hasta que Windows XP reestablezca la
conexión.

Un saludo y gracias por todo
Darhas

Este es el código que utilizo para copiar, está sacado de las MSDN de
Microsoft:

private bool CopiarFichero(string DirectorioOrigen, string
FicheroOrigen,
string DirectorioFinal, string FicheroFinal, bool SobreEscribir)
{
bool Correcto = false;
bool CorrectoOrigen = false;
bool CorrectoFINAL = false;

string fileName = FicheroOrigen;
string sourcePath = DirectorioOrigen;
string targetPath = DirectorioFinal;

// Use Path class to manipulate file and directory paths.
string sourceFile = System.IO.Path.Combine(sourcePath,
fileName);
string destFile = System.IO.Path.Combine(targetPath,
FicheroFinal);



// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}


if (System.IO.Directory.Exists(sourcePath))
{
string[] files =
System.IO.Directory.GetFiles(sourcePath);

// Copy the files and overwrite destination files if
they
already exist.
foreach (string s in files)
{
// Use static Path methods to extract only the file
name
from the path.
if (SobreEscribir == true)
{
if (!System.IO.File.Exists(destFile))
{
System.IO.File.Delete(destFile);
System.IO.File.Copy(sourceFile, destFile);
Correcto = true;
}
}
else
{
if (!System.IO.File.Exists(destFile))
{
System.IO.File.Copy(sourceFile, destFile,
true);
Correcto = true;
}
else
{
Correcto = false;
}
}
}
}
else
{
Console.WriteLine("Source path does not exist!");
Correcto = false;
}

// Keep console window open in debug mode.
//Console.WriteLine("Press any key to exit.");
//Console.ReadKey();

return (Correcto);
}






Microsoft Visual C++ MVP => http://geeks.ms/blogs/rfog
La duda es la llave del conocimiento.
Respuesta Responder a este mensaje
#3 Darhas
15/01/2010 - 00:29 | Informe spam
Hola RFOG,

El problema principal es que es servidor no depende de mi :(

Por eso pregunta, de como puedo forzar una reconexión, si se puede claro.

De esta forma se solucionarían todo los problemas. O al menos lo apaliaría.

Lo del TRY y CATH lo estoy haciendo, pero es muy limitado, ya que
basicamente compruebo que exista un ruta, pero esto no fuerza una reeconexión
como lo haría haciendo doble CLICK sobre el mapeo del Servidor.

No obstante muchas gracias por la respuesta.
Darhas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida