public void EscribirMetaData() { var meta = $"{(IdPAdre).ToString().PadLeft(3, '0')}" + $"|{Grado.ToString().PadLeft(3, '0')}|{Siguiente.ToString().PadLeft(3, '0')}" + $"|{LargoPadre.ToString().PadLeft(3, '0')}|{LargoHijo.ToString().PadLeft(3, '0')}"; var escritor = new FileStream(GlobalPath, FileMode.Open); escritor.Write(Encoding.ASCII.GetBytes(meta), 0, (meta).Length); escritor.Close(); }
public void PrimeraSeparacion(NodoSF Actual, Relacion Nuevo) { var lista = new List <Relacion>(); foreach (var item in Actual.Datos) { lista.Add(item); } lista.Add(Nuevo); // escribir en el archivo todos los nodos disponibles del padre e hijos var hijo1 = new NodoSF(Grado, true) { Grado = Grado }; hijo1.id = IdPAdre; var indice = 0; for (int i = 0; i < lista.Count / 2; i++) { hijo1.Datos[indice] = lista[i]; indice++; } indice = 0; var hijo2 = new NodoSF(Grado, true); hijo2.id = Siguiente; Siguiente++; for (int i = (lista.Count / 2) + 1; i < lista.Count; i++) { hijo2.Datos[indice] = lista[i]; indice++; } var raiznueva = new NodoSF(Grado, false) { id = Siguiente }; lista.Sort((x, y) => x.Nombre.CompareTo(y.Nombre)); raiznueva.Datos[0] = lista[(lista.Count / 2) + 1]; IdPAdre = Siguiente; raiznueva.Hijos[0] = hijo1.id; raiznueva.Hijos[1] = hijo2.id; hijo1.Padre = raiznueva.id; hijo2.Padre = raiznueva.id; Siguiente++; SortDatos(raiznueva.Datos); SortDatos(hijo1.Datos); SortDatos(hijo2.Datos); var escritor = new StreamWriter(GlobalPath); //metadata escritor.WriteLine($"{(IdPAdre).ToString().PadLeft(3, '0')}" + $"|{Grado.ToString().PadLeft(3, '0')}|{Siguiente.ToString().PadLeft(3, '0')}" + $"|{LargoPadre.ToString().PadLeft(3, '0')}|{LargoHijo.ToString().PadLeft(3, '0')}|"); // nodos escritor.WriteLine(hijo1.WriteNodo()); escritor.WriteLine(hijo2.WriteNodo()); escritor.WriteLine(raiznueva.WriteNodo()); escritor.Close(); }
public void Insertar(Relacion Nuevo) { var FILE = new FileStream(GlobalPath, FileMode.Open); var lector = new StreamReader(FILE); if (IdPAdre == 1 && !primeraSeparecion) // aun no se parte { var linea = lector.ReadLine(); linea = lector.ReadLine(); FILE.Close(); Raiz = Raiz.ReadNodo(linea); var contador = 0; for (int i = 0; i <= Raiz.Datos.Length; i++) { if (i == Raiz.Datos.Length) { PrimeraSeparacion(Raiz, Nuevo); break; } //insertando en la raiz if (Raiz.Datos[i] == null) { Raiz.Datos[contador] = Nuevo; SortDatos(Raiz.Datos); var escritor = new StreamWriter(GlobalPath); escritor.WriteLine($"{(IdPAdre).ToString().PadLeft(3, '0')}" + $"|{Grado.ToString().PadLeft(3, '0')}|{Siguiente.ToString().PadLeft(3, '0')}" + $"|{LargoPadre.ToString().PadLeft(3, '0')}|{LargoHijo.ToString().PadLeft(3, '0')}"); escritor.WriteLine(Raiz.WriteNodo()); escritor.Close(); break; } else { contador++; } } } else { FILE.Close(); InsertarEnHoja(SeekPadre(IdPAdre), Nuevo); } }