private void changeDirectory(string path) { if (currDirIno == -1) { //заполнение рута SerializableObject5 obj5 = new SerializableObject5(); obj5.Roots = roots; MySerializer5 serializer5 = new MySerializer5(); serializer5.SerializeObject5("Roots.txt", obj5); } else { save_file_binary(currDirIno, serializeDirectory(roots)); } //открываем рут он же корень SerializableObject5 obj = new SerializableObject5(); MySerializer5 serializer = new MySerializer5(); obj.Roots = roots; obj = serializer.DeserializeObject5("Roots.txt"); roots = obj.Roots; if (path == "/") { currDir = "/"; return; } String[] filenames = path.Trim('/').Split('/'); if (filenames.Length > 0) { int err = openDirectory(filenames[0]); if (err == -9) { changeDirectory(currDir); return; } if (filenames.Length > 1) { for (int i = 1; i < filenames.Length; i++) { save_file_binary(currDirIno, serializeDirectory(roots)); err = openDirectory(filenames[i]); if (err == -9) { changeDirectory(currDir); return; } } } } currDir = path; }
public Boolean open() { Main.roots.Clear(); Main.inodes.Clear(); Main.bitcard.Clear(); try { //открываем суперблок BinaryFormatter Formatter = new BinaryFormatter(); FileStream File = new FileStream("SuperBlock.txt", FileMode.Open); Main.Super1 = (SuperBlock)Formatter.Deserialize(File); File.Close(); //открываем иноды SerializableObject1 obj1 = new SerializableObject1(); MySerializer1 serializer1 = new MySerializer1(); obj1.Inodes = Main.inodes; obj1 = serializer1.DeserializeObject1("Inodes.txt"); Main.inodes = obj1.Inodes; //открываем битовую карту SerializableObject2 obj2 = new SerializableObject2(); MySerializer2 serializer2 = new MySerializer2(); obj2.Bitcard = Main.bitcard; obj2 = serializer2.DeserializeObject2("Bitcard.txt"); Main.bitcard = obj2.Bitcard; //достаем пользователей SerializableObject obj = new SerializableObject(); obj.Users = Main.users; MySerializer serializer = new MySerializer(); obj = serializer.DeserializeObject("Users.txt"); Main.users = obj.Users; //открываем рут он же корень SerializableObject5 obj5 = new SerializableObject5(); MySerializer5 serializer5 = new MySerializer5(); obj5.Roots = Main.roots; obj5 = serializer5.DeserializeObject5("Roots.txt"); Main.roots = obj5.Roots; return(true); } catch (FileNotFoundException e) { MessageBox.Show("Система повреждена! Обратитесь к администратору!", "Аларма"); return(false); } }