Título: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: nadales56 en 5 Marzo 2019, 12:35 pm Buenas tardes! Gracias de antemano por leer este post.
Les comento, estoy implementando un código relativamente sencillo que se trata de copiar el contenido de un fichero de texto en otro, en base al nombre del fichero de texto origen que se encuentra en el mismo directorio donde se encuentra el script que estoy programando. Si quisiera recurrir a un fichero que se encuentra en un directorio diferente, ¿qué funciones puedo usar o... dónde me recomiendan buscar información? Les hago copia y pega del main. /////////////////////////////////////// int main(){ Codigo ok; string entrada, salida; entrada = "Fichero_Entrada.txt"; //Fichero de donde cojo los datos salida = "Fichero_Salida.txt"; // Creo nuevo fichero con este nombre con los datos copiados de Fichero_Entrada traspasar_fichero(salida, entrada, ok); codigo_error(ok); entrada = "Fichero_Salida.txt"; salida = "Datos_actualizados.txt"; actualizar_datos(salida, entrada, ok); codigo_error(ok); } //////////////////////////////////////////// Muchas gracias! Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: K-YreX en 5 Marzo 2019, 15:20 pm Los códigos puedes (y debes :xD) meterlos entre etiquetas de código GeSHi, en lugar de delimitarlo con barras diagonales. Es más fácil de ver y no se producen problemas de etiquetas. Lo puedes seleccionar encima del cuadro de texto al escribir/modificar un mensaje.
Dicho esto, si lo que quieres es cambiar la ruta del fichero, simplemente añade la ruta al nombre del fichero.
Código
Código
Si quieres más información tendrías que buscar sobre como escribir la dirección o ruta de un archivo ya que eso es lo importante para lo que quieres hacer. :-X Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: nadales56 en 6 Marzo 2019, 09:05 am Muchas gracias YRex… para Windows no era así exactamente, pero con la pista que me has dado he acabado encontrándolo y funciona perfectamente.
Código
C++ toma \ como carácter de escape, por lo que hay que escribirlo doble \\ para separar las carpetas y cada una de ellas debe de tener sus respectivas comillas, tal y como he puesto en el ejemplo. Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: K-YreX en 6 Marzo 2019, 16:46 pm De todas formas me extraña que haya que usar doble barra ya que en ocasiones he visto rutas especificadas en un solo <string> :-X
Código
Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: nadales56 en 8 Marzo 2019, 11:58 am Buenas!
Siento ser tan pesado con el tema, pero quiero aprender bien al respecto. Me he pasado a Ubuntu a través de una maquina virtual. De manera que el script lo escribo desde editor de texto y compilo desde el terminal. El programa lo que hace es acceder a un fichero que se encuentra en la Carpeta_A y copiar su contenido en un nuevo fichero que se encontrará en la Carpeta_B, siendo la Carpeta_B el lugar donde tengo guardado el archivo cpp que estoy programando. En el script tengo escrito esto: Código
Y en el terminal he accedido a Escritorio/Carpeta_B, que es dónde se encuentra el archivo cpp, y para compilar hago: g++ -o Nombre Archivo.cpp Me compila y no da error alguno y para ejecutar: ./Nombre Pero no da resultado. Decir también, que he probado copiando el Fichero_Origen en la Carpeta_B, que es donde se está trabajando, y en vez de poner rutas he puesto los nombres de los ficheros entre comillas con su respectiva terminación, y el programa hace lo que comento ahí arriba. Lo hice para descartar que el error estuviese en el código. Mis preguntas son: 1) ¿Están bién escritas las rutas en el script? 2) ¿Tengo que especificar en el terminal la ruta donde está el Fichero_Origen? 3) ¿He de usar alguna librería específica para trabajar con directorios? Gracias de antenmano, un saludo. Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: K-YreX en 8 Marzo 2019, 14:21 pm Código: [code]ruta_absoluta = "/home/<tu_usuario>/Escritorio/fichero_prueba.txt" No sé por qué mi mensaje empieza con una etiqueta de <code> que no puedo quitar... Este párrafo debería ir lo primero, pero para que no se confunda con un <code> lo dejo aquí... :rolleyes: Primero el tema de las rutas. El sistema de archivos de Linux "cuelga" de la raíz (root) /. Podemos referirnos a un fichero usando una ruta absoluta o una ruta relativa:
Código: // si estamos en /home/<tu_usuario> La dirección "/home/<tu_usuario> se puede abreviar con ~ (alt gr + 4)... :silbar: Código: ruta1 = "/home/<tu_usuario>/Escritorio/Carpeta1/prueba.txt" Puedes obtener más información buscando rutas de archivos en Linux o rutas relativas y absolutas. Y también puedes estudiar todo el sistema de archivos y poder localizar algunos de los directorios fundamentales del sistema y donde se encuentran. Suerte :-X[/code] Citar 1) ¿Están bién escritas las rutas en el script? Si estás ejecutando el programa desde tu home (~) sí. En otro caso no, si usas una ruta relativa tienes que saber desde donde lo estás ejecutando para hacer bien la referencia. Si quieres que funcione desde cualquier sitio, usa una ruta absoluta (usando ~ te ahorras un trozo). De todos modos, por comodidad cuando sabes que todo se va a mover en conjunto o que no se va a mover, se suelen usar rutas relativas por comodidad.Citar 2) ¿Tengo que especificar en el terminal la ruta donde está el Fichero_Origen? Siempre. Otra cosa es que si tanto el fichero como el ejecutable están en el mismo lugar, basta con el nombre del fichero, pero porque esa es su ruta relativa. ACLARO: Más que "donde esté el ejecutable" es "desde donde ejecutes el programa en la terminal".Citar 3) ¿He de usar alguna librería específica para trabajar con directorios? Más que "para trabajar con directorios" es "para trabajar con ficheros" y has de incluir la librería <fstream> que el mismo nombre lo dice <file> + <stream>.Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks Publicado por: nadales56 en 8 Marzo 2019, 18:07 pm YreX-DwX, muchísimas gracias por el curro que te has dado tio!
Mucha información que procesar, una vez procesada la aplicaré y te diré que tal me va! Gracias por la lección! ;) Título: Re: Ayuda con ficheros y directorios en C++ usando Codeblocks [Solución al final] Publicado por: nadales56 en 11 Marzo 2019, 10:30 am Escribo aquí el código que he usado para hacer referencia a las rutas donde tengo guardados los ficheros.
En primer lugar, nos ponemos en situación: En Escritorio -> Carpeta_Origen -> Fichero_Origen.txt Copiaremos el contenido de Fichero_Origen.txt en un nuevo fichero que denotaremos como Fichero_Destino.txt, que se guardará en: Escritorio -> Carpeta_Destino Decir también que nuestro script se encuentra en Escritorio -> Carpeta_Destino. Lo que quiere decir, que en el terminal especifico que me encuentro en dicha ruta, escribiendo cd Escritorio + ENTER + cd Carpeta_Destino + ENTER En este caso he usado la ruta relativa, por simplificar. Código
Coloco .. para volver a Escritorio, ya que ejecutamos desde una carpeta que está en él (Carpeta_Destino) y luego concreto que quiero ir a Carpeta_Origen Código
En este caso, ya me encuentro en la ruta que deseo (la misma donde he ejecutado el script), por lo que lo único que tengo que hacer es ponerle nombre al fichero que quiero crear con el contenido copiado, añadiendo su respectiva terminación Esto no hubiese posible sin la ayuda y las explicaciones de YreX-DwX. Un saludo! |