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;
        }
Esempio n. 2
0
        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);
            }
        }