示例#1
0
        //撤销上一步操作
        private void button7_Click(object sender, EventArgs e)
        {
            //检查之前是否有操作
            if (iteraterList.Count == 0)
            {
                MessageBox.Show("无可撤销的操作", "Tip",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            FileIterater fileIterater = iteraterList[iteraterList.Count - 1];

            //撤销对文件的删除
            if (fileIterater.isfile && fileIterater.isdeleted)
            {
                recoverFile(fileIterater);
            }
            //撤销对目录的删除
            else if (!fileIterater.isfile && fileIterater.isdeleted)
            {
                recoverFolder(fileIterater);
            }
            //撤销文件的创建,释放内存且不此操作可逆
            else if (fileIterater.isfile && !fileIterater.isdeleted)
            {
                undoFileCreation(fileIterater);
            }
            //撤销文件夹的创建
            else if ((!fileIterater.isfile && !fileIterater.isdeleted))
            {
                undoFolderCreation(fileIterater);
            }
        }
示例#2
0
        //创建文件
        private void button4_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode == null)
            {
                MessageBox.Show("请选择一个节点", "提示信息",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                //创建一个节点对象,并初始化
                fileNode tmp;
                tmp = new fileNode();
                if (newFileName == "")
                {
                    MessageBox.Show("请输入名称", "提示信息",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                else
                {
                    tmp.Text        = newFileName + ".txt";
                    tmp.ToolTipText = "1";
                    //在TreeView组件中加入子节点
                    tmp.size = 0;
                    //for (int i = 0; i < 32;i++ )
                    //{
                    //    if(Fat[i].Name==tmp.Text)
                    //    {
                    //        MessageBox.Show("有重复命名的文件", "提示信息",
                    //    MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //        return;
                    //    }
                    //}
                    //tmp.address = CreateFile(1, tmp.Text);
                    if (!MemManager.CanCreate(tmp.Text))
                    {
                        MessageBox.Show("有重复命名的文件", "提示信息",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    tmp.address = MemManager.AllocateFile(1, tmp.Text);
                    if (tmp.address >= 0)
                    {
                        treeView1.SelectedNode.Nodes.Add(tmp);
                        treeView1.SelectedNode = tmp;

                        FileStream NewText = File.Create(tmp.Text);
                        NewText.Close();
                    }
                    else
                    {
                        MessageBox.Show("磁盘空间不足,创建失败", "提示信息",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    textBox2.Text = "";
                    FileIterater fileIterater = new FileIterater(tmp, treeView1.SelectedNode, true, false);
                    iteraterList.Add(fileIterater);
                }
            }
        }
示例#3
0
        public void AddNode(FileIterater node)
        {
            node.next = this.next;
            node.last = this;

            this.next.last = node;
            this.next      = node;
        }
示例#4
0
        private void undoFolderCreation(FileIterater fileIterater)
        {
            TreeNode father = fileIterater.father;
            TreeNode node   = fileIterater.node;

            father.Nodes.Remove(node);
            iteraterList.RemoveAt(iteraterList.Count - 1);
        }
示例#5
0
        //撤销对目录的删除
        private void recoverFolder(FileIterater fileIterater)
        {
            TreeNode father = fileIterater.father;
            TreeNode node   = fileIterater.node;

            father.Nodes.Add(node);
            iteraterList.RemoveAt(iteraterList.Count - 1);
        }
示例#6
0
        //撤销文件的创建,释放内存且此操作不可逆
        private void undoFileCreation(FileIterater fileIterater)
        {
            TreeNode father = fileIterater.father;
            TreeNode node   = fileIterater.node;

            MemManager.ReleaseFile(node.Text);
            File.Delete(node.Text);
            father.Nodes.Remove(node);
            iteraterList.RemoveAt(iteraterList.Count - 1);
        }
示例#7
0
        //////////////
        //buttons
        /////////////

        //删除文件
        private void button3_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode == null)
            {
                MessageBox.Show("请选择一个节点删除", "提示信息",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (treeView1.SelectedNode.Parent == null)
            {
                MessageBox.Show("根节点不可以删除", "提示信息",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (treeView1.SelectedNode.ToolTipText == "1")
            {
                //int now = FindinFat(treeView1.SelectedNode.Text);
                //int pre = now;
                //while (Fat[now].next != -1)
                //{
                //    pre = now;
                //    now = Fat[now].next;
                //    Fat[pre].isStart = false;
                //    Fat[pre].Name = "";
                //    Fat[pre].next = -1;
                //    Fat[pre].busy = false;
                //    emptyblock++;
                //}
                //Fat[now].isStart = false;
                //Fat[now].Name = "";
                //Fat[now].next = -1;
                //Fat[now].busy = false;
                //emptyblock++;
                //
                FileIterater fileIterater = new FileIterater(treeView1.SelectedNode, treeView1.SelectedNode.Parent, true, true);
                iteraterList.Add(fileIterater);
                //
            }
            else
            {
                FileIterater fileIterater = new FileIterater(treeView1.SelectedNode, treeView1.SelectedNode.Parent, false, true);
                iteraterList.Add(fileIterater);
            }
            //DeleteFile(treeView1.SelectedNode.Nodes);
            //DeletePath(treeView1.SelectedNode);
            treeView1.Nodes.Remove(treeView1.SelectedNode);
        }
示例#8
0
        //撤销对文件的删除
        private void recoverFile(FileIterater fileIterater)
        {
            TreeNode father = fileIterater.father;
            TreeNode node   = fileIterater.node;

            //MemManager.AllocateFile(1, node.Text);
            father.Nodes.Add(node);
            FileStream NewText = File.Create(node.Text);

            NewText.Close();
            StreamWriter sw = new StreamWriter(node.Text);

            sw.WriteLine(fileIterater.text);
            sw.Close();
            sw.Dispose();
            NewText.Close();
            iteraterList.RemoveAt(iteraterList.Count - 1);
        }
示例#9
0
        //存储磁盘fat表
        //public void SaveFat()
        //{
        //    for (int i = 0; i < 32; i++)
        //    {
        //        FileStream fs = new FileStream("fat.bin", FileMode.Append);
        //        StreamWriter sw = new StreamWriter(fs);
        //        string line = "";
        //        if (Fat[i].busy)
        //        {
        //            line = "1 " + Fat[i].Name + " " + Fat[i].next.ToString() + " ";
        //            if (Fat[i].isStart)
        //                line += "1";
        //            else
        //                line += "0";
        //        }
        //        else
        //            line = "0 0 -1 -1";
        //        sw.WriteLine(line);
        //        sw.Close();
        //        sw.Dispose();
        //        fs.Close();
        //        fs.Dispose();
        //    }
        //}

        //在fat表中找到文件起始块。
        //public int FindinFat(string n)
        //{
        //    for(int i=0;i<32;i++)
        //    {
        //        if (Fat[i].isStart && Fat[i].Name == n)
        //            return i;
        //    }
        //    return -1;
        //}

        //给文件分配块数
        //public int CreateFile(int size,string name)
        //{
        //    if (emptyblock == 0)
        //        return -1;

        //    int num_block;//所需块数
        //    if(size%32!=0)
        //    {
        //        num_block = size / 32 + 1;
        //    }
        //    else
        //    {
        //        num_block = size / 32;
        //    }
        //    int prev = -1;
        //    int start = -1;
        //    if (num_block <= emptyblock)
        //    {
        //        for (int i = 0, j = 0; j < num_block; i++)
        //        {
        //            if (Fat[i].busy==false)
        //            {
        //                Fat[i].busy = true;
        //                Fat[i].Name = name;
        //                Fat[i].next = -1;
        //                if (prev != -1)
        //                {
        //                    Fat[prev].next = i;
        //                    Fat[i].isStart = false;
        //                }
        //                else
        //                {
        //                    start = i;
        //                    Fat[i].isStart = true;
        //                }
        //                prev = i;
        //                j++;
        //            }
        //        }
        //        emptyblock -= num_block;
        //    }
        //    return start;
        //}



        private void button1_Click(object sender, EventArgs e)         //添加目录
        {
            if (treeView1.SelectedNode == null)
            {
                MessageBox.Show("请选择一个节点", "提示信息",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                //创建一个节点对象,并初始化
                fileNode tmp;
                tmp = new fileNode();
                if (newPathName == "")
                {
                    MessageBox.Show("请输入名称", "提示信息",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    tmp.Text        = newPathName;
                    tmp.BackColor   = Color.Yellow;
                    tmp.ToolTipText = "0";
                    //在TreeView组件中加入子节点
                    tmp.size    = 0;
                    tmp.address = -1;
                    if (repeatName(treeView1.SelectedNode.Nodes, tmp.Text))
                    {
                        MessageBox.Show("有重复命名,创建失败", "提示信息",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    treeView1.SelectedNode.Nodes.Add(tmp);
                    treeView1.SelectedNode = tmp;
                    textBox1.Text          = "";
                    FileIterater fileIterater = new FileIterater(tmp, treeView1.SelectedNode, false, false);
                    iteraterList.Add(fileIterater);
                }
            }
        }
示例#10
0
 public void RemoveNode()
 {
     this.last.next = this.next;
     this.next.last = this.last;
 }