示例#1
0
        public NodoArbol leeDatosNoraiz(long dir, int ta)
        {
            NodoArbol regresa = new NodoArbol('H', dir, 5, ta);

            char[] nuevo;
            regresa.Apuntadores1.RemoveAt(0);
            using (archivo = new FileStream(nombreArch, FileMode.Open))
            {
                String cadena = "";
                archivo.Position = dir;

                using (BinaryReader rw = new BinaryReader(archivo))
                {
                    regresa.Tipo     = rw.ReadChar();
                    regresa.DirNodo1 = rw.ReadInt64();
                    regresa.Apuntadores1.Add(rw.ReadInt64());
                    for (int i = 0; i < 4; i++)
                    {
                        nuevo = new char[ta];
                        nuevo = rw.ReadChars(ta);
                        for (int j = 0; j < ta; j++)
                        {
                            cadena += nuevo[j];
                        }
                        regresa.Claves.Add(cadena.Replace(" ", ""));
                        regresa.Apuntadores1.Add(rw.ReadInt64());
                        cadena = "";
                    }
                }
            }
            archivo.Close();
            for (int i = 0; i < regresa.Claves.Count; i++)
            {
                regresa.Claves[i] = regresa.Claves[i].Replace("\0", "");
            }
            int cnt = 5;

            for (int i = 0; i < regresa.Apuntadores1.Count; i++)
            {
                if (regresa.Apuntadores1[i] < -2)
                {
                    cnt = i;
                    break;
                }
            }
            for (int i = 0; cnt < regresa.Apuntadores1.Count - 1; i++)
            {
                regresa.Apuntadores1.RemoveAt(cnt);
            }
            regresa.Claves.Remove("");
            regresa.Claves.Remove("����");
            regresa.Claves.Remove("����");
            regresa.Claves.Remove("����");
            regresa.Claves.Remove("����");
            if (regresa.Tipo == 'I')
            {
                for (int i = 0; i < regresa.Apuntadores1.Count; i++)
                {
                    Nodos.Add(leeDatosNoraiz(regresa.Apuntadores1[i], ta));
                }
            }
            dirActual = dir + tamañoNodo;
            return(regresa);
        }