コード例 #1
0
 internal void EscrituraEnDiscoNodo(string Ruta, int raiz)
 {
     using (var _FileStream = new FileStream(Ruta, FileMode.Open))
     {
         int    posicion = BusquedaPosicion(raiz);
         byte[] buffer   = GeneradorData.ConvertToBytes(ParaAjusteTamanoCadena());
         int    medida   = TamanoTextoCorregido();
         _FileStream.Seek(posicion, SeekOrigin.Begin);
         _FileStream.Write(buffer, 0, medida);
     }
 }
コード例 #2
0
        private void EscrituraEncabezado()
        {
            Encabezado encabezado = new Encabezado {
                Raiz = this.Raiz, SiguientePosicion = this.UltimaPosicion, Order = this.Orden
            };

            using (var _fs = new FileStream(this.Ruta, FileMode.OpenOrCreate))
            {
                _fs.Seek(0, SeekOrigin.Begin);
                _fs.Write(GeneradorData.ConvertToBytes(encabezado.ParaAjusteTamanoCadena()), 0, encabezado.AjusteTamanoCadena);
            }
        }
コード例 #3
0
        public ArbolBStar(int _Orden, string _Ruta, ICreateFixedSizeText <T> _createFixedSizeText)
        {
            this.createFixedSizeText = _createFixedSizeText;
            this.Orden = _Orden;
            this.Ruta  = _Ruta;
            Nodo <T>   Raiz        = CreacionDelNodo(Orden);
            Encabezado _Encabezado = CreacionDelEncabezado(Orden);

            this.UltimaPosicion = _Encabezado.SiguientePosicion;
            using (var _FileStream = new FileStream(_Ruta, FileMode.OpenOrCreate))
            {
                _FileStream.Write(GeneradorData.ConvertToBytes(_Encabezado.ParaAjusteTamanoCadena()), 0, _Encabezado.AjusteTamanoCadena);
                _FileStream.Write(GeneradorData.ConvertToBytes(Raiz.ParaAjusteTamanoCadena()), 0, Raiz.TamanoTextoCorregido());
            }
        }
コード例 #4
0
        public ArbolBStar(int _Orden, string _Ruta, ICreateFixedSizeText <T> createFixedSizeText, int C)
        {
            this.Orden = _Orden;
            this.Ruta  = _Ruta;
            this.createFixedSizeText = createFixedSizeText;
            var buffer = new byte[Encabezado.tamanoAjustado];

            using (var _FileStream = new FileStream(_Ruta, FileMode.OpenOrCreate))
            {
                _FileStream.Read(buffer, 0, Encabezado.tamanoAjustado);
            }
            var EncabezadoCadena = GeneradorData.ConvertToString(buffer);
            var valores          = EncabezadoCadena.Split(MetodosNecesarios.Separador);

            this.Raiz           = Convert.ToInt16(valores[0]);
            this.Orden          = Convert.ToInt16(valores[1]);
            this.UltimaPosicion = Convert.ToInt16(valores[2]);
        }
コード例 #5
0
        internal Nodo <T> LecturaNodo(string Ruta, int Order, int Raiz, int ID, ICreateFixedSizeText <T> createFixedSizeText)
        {
            int Padre = 0;

            if (ID == Raiz)
            {
                Padre = MetodosNecesarios.NullPointer;
            }
            Nodo <T> nodo             = new Nodo <T>(Order, ID, Padre, createFixedSizeText);
            int      TamanoEncabezado = Encabezado.tamanoAjustado;

            byte[] buffer;
            if (ID <= Raiz)
            {
                buffer = new byte[nodo.TamanoCorregido(nodo.Padre)];
                using (var _FileStream = new FileStream(Ruta, FileMode.OpenOrCreate))
                {
                    _FileStream.Seek((TamanoEncabezado + (Raiz - 1) * nodo.TamanoCorregido(nodo.Padre)), SeekOrigin.Begin);
                    _FileStream.Read(buffer, 0, nodo.TamanoCorregido(nodo.Padre));
                }
            }
            buffer = new byte[nodo.TamanoCorregido(nodo.Padre)];
            using (var _FileStream = new FileStream(Ruta, FileMode.OpenOrCreate))
            {
                _FileStream.Seek((TamanoEncabezado + ((Raiz - 1) * nodo.TamanoCorregido(nodo.Padre)) + nodo.TamanoCorregido(MetodosNecesarios.NullPointer)), SeekOrigin.Begin);
                _FileStream.Read(buffer, 0, nodo.TamanoCorregido(nodo.Padre));
            }
            var CadenaNodo = GeneradorData.ConvertToString(buffer);
            var valor      = CadenaNodo.Split(MetodosNecesarios.Separador);

            nodo.Padre = Convert.ToInt32(valor[1]);

            int LimitacionData = Order;

            if (nodo.Padre.Equals(MetodosNecesarios.NullPointer))
            {
                LimitacionData = (4 * (Order - 1)) / 3;
                int j = 0;
                for (int i = 2; i < LimitacionData + 2; i++)
                {
                    nodo.Data[j] = createFixedSizeText.Create(valor[i]);
                    j++;
                }
                j = 0;
                int LimitacionInicial = nodo.Data.Count + 2;
                for (int i = LimitacionInicial; i < valor.Length; i++)
                {
                    nodo.Hijos[j] = Convert.ToInt32(valor[i]);
                    j++;
                }
            }
            else
            {
                int j = 0;
                for (int i = 2; i < LimitacionData + 1; i++)
                {
                    nodo.Data[j] = createFixedSizeText.Create(valor[i]);
                    j++;
                }
                j = 0;
                int LimiteInicial = nodo.Data.Count + 2;
                for (int i = LimiteInicial; i < valor.Length; i++)
                {
                    nodo.Hijos[i] = Convert.ToInt32(valor[i]);
                    j++;
                }
            }
            return(nodo);
        }