public void actualizar() { // Crear un fichero temporal. string ficheroTemp = "articulos.tmp"; CBaseDeDatos ftemp = new CBaseDeDatos(ficheroTemp); // Copiar en el fichero temporal todos los registros del // fichero actual que no estén marcados para "borrar" CRegistro obj; for (int reg_i = 0; reg_i < nregs; reg_i++) { obj = valorEn(reg_i); if (obj.obtenerReferencia().CompareTo("borrar") != 0) { ftemp.añadir(obj); } } // Cerrar ambos ficheros, copiar el fichero temporal sobre // el actual y borrar el fichero temporal this.cerrar(); // cerrar el fichero actual ftemp.cerrar(); // cerrar el fichero temporal File.Copy(ficheroTemp, ficheroActual, true); File.Delete(ficheroTemp); }
public static void Main(string[] args) { int opción = 0; try { do { opción = menú(); switch (opción) { case 1: // nuevo fichero nuevoFich(); break; case 2: // abrir fichero abrirFich(); break; case 3: // añadir registro al final del fichero añadirReg(); break; case 4: // modificar registro modificarReg(); break; case 5: // eliminar registro eliminarReg(); break; case 6: // visualizar registros visualizarRegs(); break; case 7: // salir if (artículos != null && artículos.tieneRegsEliminados()) { artículos.actualizar(); } artículos = null; break; } }while(opción != 7); } catch (IOException e) { Console.WriteLine("Error: " + e.Message); } }
public static void nuevoFich() { if (ficheroAbierto) { Console.WriteLine("Ya hay un fichero abierto."); return; } Console.Write("Nombre del fichero: "); string strFichero = Console.ReadLine(); // nombre del fichero while (File.Exists(strFichero)) { Console.WriteLine("Este fichero existe. Escriba otro."); strFichero = Console.ReadLine(); } artículos = new CBaseDeDatos(strFichero); ficheroAbierto = true; }
public static void abrirFich() { if (ficheroAbierto) { Console.WriteLine("Ya hay un fichero abierto."); return; } Console.Write("Nombre del fichero: "); string strFichero = Console.ReadLine(); // nombre del fichero string[] fichero = null; char resp; while (!File.Exists(strFichero)) { Console.WriteLine("Este fichero no existe."); Console.Write("Desea ver la lista de ficheros? s/n: "); resp = (char)Console.Read(); Console.ReadLine(); // limpiar el buffer de entrada if (resp == 'n') { return; } // Obtener un listado del directorio actual de trabajo fichero = Directory.GetFiles(Directory.GetCurrentDirectory()); for (int i = 0; i < fichero.Length; i++) { Console.Write(Path.GetFileName(fichero[i]) + ", "); } Console.Write("\n\nNombre del fichero: "); strFichero = Console.ReadLine(); } artículos = new CBaseDeDatos(strFichero); ficheroAbierto = true; }