commit 8fa48296188603a89f8e41631c878539a869e8ea Author: Dani Minguet Date: Sun Oct 9 17:14:42 2022 +0200 MiCopy diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..8f04705 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + MiCopy + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b06d96 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +HACE UNA COPIA DE UN ARCHIVO DE ORIGEN PASADO POR PANTALLA A UNO DE DESTINO PASADO POR PANTALLA TAMBIÉN + +He hecho las comprobaciones para ver si los archivos existen y en el caso del de donde se hace la copia, que +se pueda escribir en él si ya existe. + +A la hora de copiar he usado el método "Thread.sleep()" para hacer una breve pausa entre datos copiados y +mostrar así la barra de progreso de manera correcta. + +Una vez acabada la copia, se visualiza el contenido de ambos archivos para comprobar su correcto funcionamiento + +RESULTADO: + +``` +Introduce la ruta del archivo de origen: +C:\Users\Dani\OneDrive\Documentos\AccesoADatos\fichero.txt +Introduce la ruta del archivo de destino: +C:\Users\Dani\OneDrive\Documentos\AccesoADatos\ficheroCopia.txt +Copiando archivo... +(||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||) +Archivo copiado con éxito!! + +Contenido del archivo de origen: + +qwertyuiopasdfghjkl\zxcvbnm +aefffffafeafsceac +veacecavbndtyamyksrvfdad +rvaavracvbgnsfntabvZDBbvnerw + +Contenido del archivo de destino: + +qwertyuiopasdfghjkl\zxcvbnm +aefffffafeafsceac +veacecavbndtyamyksrvfdad +rvaavracvbgnsfntabvZDBbvnerw +``` \ No newline at end of file diff --git a/bin/micopy/com/daniminguet/es/MiCopy.class b/bin/micopy/com/daniminguet/es/MiCopy.class new file mode 100644 index 0000000..a804438 Binary files /dev/null and b/bin/micopy/com/daniminguet/es/MiCopy.class differ diff --git a/bin/module-info.class b/bin/module-info.class new file mode 100644 index 0000000..91c3e22 Binary files /dev/null and b/bin/module-info.class differ diff --git a/src/micopy/com/daniminguet/es/MiCopy.java b/src/micopy/com/daniminguet/es/MiCopy.java new file mode 100644 index 0000000..bc99654 --- /dev/null +++ b/src/micopy/com/daniminguet/es/MiCopy.java @@ -0,0 +1,118 @@ +package micopy.com.daniminguet.es; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Scanner; + +public class MiCopy { + public static void main(String[] args) { + Scanner lector = new Scanner(System.in); + + //Se pide el archivo de origen + System.out.println("Introduce la ruta del archivo de origen:"); + String archivoOrigenString = lector.nextLine(); + + File archivoOrigen = new File(archivoOrigenString); + + try { + //Si el archivo de origen existe, se pedirá el archivo de destino + if(archivoOrigen.exists()) { + System.out.println("Introduce la ruta del archivo de destino:"); + String archivoDestinoString = lector.nextLine(); + + File archivoDestino = new File(archivoDestinoString); + + //Si el archivo de destino existe y tiene permisos para escribir, sobreescribirá los datos + if(archivoDestino.exists()) { + if(archivoDestino.canWrite()) { + InputStream isCopiar = new FileInputStream(archivoOrigen); + OutputStream osPegar = new FileOutputStream(archivoDestino); + copiar(isCopiar, osPegar); + isCopiar.close(); + osPegar.close(); + } else { + System.out.println("No tienes permisos para modificar el archivo de destino"); + } + //Si el archivo de destino no existe, lo crea y escribe los datos + } else { + System.out.println("Nuevo archivo creado"); + archivoDestino.createNewFile(); + InputStream isCopiar = new FileInputStream(archivoOrigen); + OutputStream osPegar = new FileOutputStream(archivoDestino); + copiar(isCopiar, osPegar); + isCopiar.close(); + osPegar.close(); + } + System.out.println(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + String linea; + + //Mostrará el contenido de los dos archivos para verificar que funciona correctamente + FileReader frOrigen = new FileReader(archivoOrigen); + BufferedReader brOrigen = new BufferedReader(frOrigen); + System.out.println("Contenido del archivo de origen:"); + System.out.println(); + while((linea = brOrigen.readLine()) != null) { + System.out.println(linea); + } + System.out.println(); + frOrigen.close(); + brOrigen.close(); + + linea = null; + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + FileReader frDestino = new FileReader(archivoDestino); + BufferedReader brDestino = new BufferedReader(frDestino); + System.out.println("Contenido del archivo de destino:"); + System.out.println(); + while((linea = brDestino.readLine()) != null) { + System.out.println(linea); + } + frDestino.close(); + brDestino.close(); + //Si el archivo no existe, el programa finalizará + } else { + System.out.println("El archivo de origen no existe o no se encuentra la ruta correcta"); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void copiar(InputStream isCopiar, OutputStream osPegar) throws IOException { + int c; + + //Proceso de copia + System.out.println("Copiando archivo..."); + System.out.print("("); + try { + while((c = isCopiar.read()) != -1) { + osPegar.write(c); + System.out.print("|"); + Thread.sleep(40); + } + } catch (InterruptedException ie) { + + } + System.out.println(")"); + System.out.println("Archivo copiado con éxito!!"); + } +} \ No newline at end of file diff --git a/src/module-info.java b/src/module-info.java new file mode 100644 index 0000000..93cb425 --- /dev/null +++ b/src/module-info.java @@ -0,0 +1,3 @@ +module MiCopy { + exports micopy.com.daniminguet.es; +} \ No newline at end of file