private void grabaDireccionesSecundario(string directorio, Secundario secundario) { try { using (writer = new BinaryWriter(new FileStream(directorio, FileMode.Open)))//Abre el archivo con el BinaryWriter { //this.writer.Seek((int)this.dirIndice, SeekOrigin.Current);//Posiciona el grabado del archivo en la dirección actual this.writer.BaseStream.Position = this.dirIndice; for (int i = 0; i < secundario.Direcciones.Length; i++) { if (this.tipo.Equals('C')) { writer.Write(secundario.Llaves[i].ToCharArray()); } else if (this.tipo.Equals('E')) { writer.Write(Int32.Parse(secundario.Llaves[i])); } else if (this.tipo.Equals('D')) { writer.Write(float.Parse(secundario.Llaves[i])); } writer.Write(secundario.Direcciones[i]); } writer.Write(secundario.DirSig); } } catch (Exception e) { MessageBox.Show(e.Message); } }
public void altaIndiceSecundario(string llave, long direccion, string directorio) { bool band; band = this.tipo.Equals('C'); Secundario secunadrio; if (this.dirIndice == -1) { int tam; tam = MetodosAuxiliares.calculaTamIdxPrim(this.longitud); secunadrio = new Secundario(this.nombre, this.dirIndice, tam, this.longitud, -1, band); this.indices.Add(secunadrio); this.dirIndice = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); this.grabaDireccionesSecundario(directorio, secunadrio); for (int i = 0; i < secunadrio.Direcciones.Length; i++) { secunadrio.Direcciones[i] = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); this.grabaApuntadoresSecundario(directorio, secunadrio, secunadrio.Direcciones[i], i); } } int idx; secunadrio = ((Secundario)this.indices.First()); idx = secunadrio.alta(llave, direccion); this.grabaApuntadoresSecundario(directorio, secunadrio, secunadrio.Direcciones[idx], idx); this.grabaDireccionesSecundario(directorio, secunadrio); }
private void leeSecundario(string directorio) { try { Secundario secundario; bool band; band = this.tipo.Equals('C'); int tamaño; tamaño = MetodosAuxiliares.calculaTamIdxPrim(this.longitud); secundario = new Secundario(this.nombre, this.dirIndice, tamaño, this.longitud, -1, band); using (reader = new BinaryReader(new FileStream(directorio, FileMode.Open)))//Abre el archivo con el BinaryWriter { reader.BaseStream.Position = this.dirIndice; for (int i = 0; i < secundario.Direcciones.Length; i++) { if (band) { secundario.Llaves[i] = new string(reader.ReadChars(this.longitud)); } else { if (this.tipo.Equals('E')) { secundario.Llaves[i] = reader.ReadInt32().ToString(); } else { secundario.Llaves[i] = reader.ReadSingle().ToString(); } } secundario.Direcciones[i] = reader.ReadInt64(); } secundario.DirSig = reader.ReadInt64(); } for (int i = 0; i < secundario.Direcciones.Length; i++) { this.LeeApuntadoresSecundario(directorio, i, secundario); } this.indices.Add(secundario); } catch (Exception e) { MessageBox.Show(e.Message); } }
private void LeeApuntadoresSecundario(string directorio, int i, Secundario secundario) { try { using (reader = new BinaryReader(new FileStream(directorio, FileMode.Open))) { reader.BaseStream.Position = secundario.Direcciones[i]; for (int j = 0; j < Constantes.tamNodoAux; j++) { secundario.Apuntadores[i, j] = reader.ReadInt64(); } } } catch (Exception e) { MessageBox.Show(e.Message); } }
private void grabaApuntadoresSecundario(string directorio, Secundario secunadrio, long dir, int i) { try { using (writer = new BinaryWriter(new FileStream(directorio, FileMode.Open))) //Abre el archivo con el BinaryWriter { this.writer.Seek((int)dir, SeekOrigin.Current); //Posiciona el grabado del archivo en la dirección actual for (int j = 0; j < Constantes.tamNodoAux; j++) { writer.Write(secunadrio.Apuntadores[i, j]); } } } catch (Exception e) { MessageBox.Show(e.Message); } }