コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
 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);
     }
 }