⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file.cs

📁 os 课程设计不含文档 123456789
💻 CS
📖 第 1 页 / 共 5 页
字号:
            int block2 = 2;
            for (int i = 0; i < paths.Length - 1; i++)
            {
                disk_.readblock1(block1);
                string[] name = new string[8];
                for (int n = 0; n < 8; n++)
                {
                    name[n] = Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 5]));
                    name[n] = name[n].Trim();
                }
                for (int m = 0; m < 8; m++)
                {
                    if (name[m] == paths[i + 1])
                        mubiaoweizhi = m;
                }
                if (mubiaoweizhi == -1)
                {
                    disk_.readblock1(block2);
                    for (int n = 0; n < 8; n++)
                    {
                        name[n] = Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 5]));
                        name[n] = name[n].Trim();
                    }
                    for (int m = 0; m < 8; m++)
                    {
                        if (name[m] == paths[i + 1])
                            mubiaoweizhi = m;
                    }
                }
                block1 = Convert.ToInt32(disk_.buffer1[mubiaoweizhi * 16 + 11]);
                block2 = Convert.ToInt32(disk_.buffer1[mubiaoweizhi * 16 + 12]);
            }
            string[,] tonode;
            int times = 0;
            disk_.readblock1(block1);
            for (int i = 0; i < 8; i++)
            {
                if (Convert.ToInt32(disk_.buffer1[i * 16 + 15]) == 1)//如果是已经建成的fcb块,进行处理.预留的字节作为是否已经建成fcb的标志
                {
                    times++;
                }
            }
            disk_.readblock1(block2);
            for (int i = 0; i < 8; i++)
            {
                if (Convert.ToInt32(disk_.buffer1[i * 16 + 15]) == 1)//如果是已经建成的fcb块,进行处理.预留的字节作为是否已经建成fcb的标志
                {
                    times++;
                }
            }
            tonode = new string[times, 3];//确定有多少个文件
            int c = 0;
            disk_.readblock1(block1);
            for (int i = 0; i < 8; i++)
            {
                if (Convert.ToInt32(disk_.buffer1[i * 16 + 15]) == 1)//如果是已经建成的fcb块,进行处理.预留的字节作为是否已经建成fcb的标志
                {
                    string[] fcb = new string[3];
                    fcb[0] = Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 5]));
                    fcb[0] = fcb[0].Trim();
                    fcb[1] = Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 6])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 7])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 8]));
                    fcb[1] = fcb[1].Trim();
                    fcb[2] = Convert.ToString(disk_.buffer1[i * 16 + 9]);
                    tonode[c, 0] = fcb[0];
                    tonode[c, 1] = fcb[1];
                    tonode[c, 2] = fcb[2];
                    c++;
                }
            }
            disk_.readblock1(block2);
            for (int i = 0; i < 8; i++)
            {
                if (Convert.ToInt32(disk_.buffer1[i * 16 + 15]) == 1)//如果是已经建成的fcb块,进行处理.预留的字节作为是否已经建成fcb的标志
                {
                    string[] fcb = new string[3];
                    fcb[0] = Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 5]));
                    fcb[0] = fcb[0].Trim();
                    fcb[1] = Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 6])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 7])) + Convert.ToString(Convert.ToChar(disk_.buffer1[i * 16 + 8]));
                    fcb[1] = fcb[1].Trim();
                    fcb[2] = Convert.ToString(disk_.buffer1[i * 16 + 9]);
                    tonode[c, 0] = fcb[0];
                    tonode[c, 1] = fcb[1];
                    tonode[c, 2] = fcb[2];
                    c++;
                }
            }
            return tonode;
        }
        public bool created(string currdir, string dirn)//创建目录
        {
            string[] paths;
            int mubiaoweizhi = -1;
            paths = splitfullpath(currdir);

            if (paths[0] == "C")
            {
                disk_.diskfilename = disk_.diskfile[0];
            }
            else if (paths[0] == "D")
            {
                disk_.diskfilename = disk_.diskfile[1];
            }
            else
            {
                disk_.diskfilename = disk_.diskfile[0];
            }
            int block1 = 1;
            int block2 = 2;
            for (int i = 0; i < paths.Length - 1; i++)
            {
                disk_.readblock1(block1);
                string[] name = new string[8];
                for (int n = 0; n < 8; n++)
                {
                    name[n] = Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 5]));
                    name[n] = name[n].Trim();
                }
                for (int m = 0; m < 8; m++)
                {
                    if (name[m] == paths[i + 1])
                        mubiaoweizhi = m;
                }
                if (mubiaoweizhi == -1)
                {
                    disk_.readblock1(block2);
                    for (int n = 0; n < 8; n++)
                    {
                        name[n] = Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_.buffer1[n * 16 + 5]));
                        name[n] = name[n].Trim();
                    }
                    for (int m = 0; m < 8; m++)
                    {
                        if (name[m] == paths[i + 1])
                            mubiaoweizhi = m;
                    }
                }
                block1 = Convert.ToInt32(disk_.buffer1[mubiaoweizhi * 16 + 11]);
                block2 = Convert.ToInt32(disk_.buffer1[mubiaoweizhi * 16 + 12]);
            }
            disk_.readblock1(block1);
            mubiaoweizhi = -1;
            for (int i = 0; i < 8; i++)
            {
                if (Convert.ToInt32(disk_.buffer1[i * 16 + 15]) == 0)
                    mubiaoweizhi = i;
            }
            if (mubiaoweizhi == -1)
            {
                disk_.readblock1(block2);
                for (int i = 0; i < 8; i++)
                {
                    if (Convert.ToInt32(disk_.buffer1[i * 16 + 15]) == 0)
                        mubiaoweizhi = i;
                }
                char[] fcb = new char[16];
                char[] fn = new char[dirn.Length];
                //char[] en = new char[ename.Length];
                fn = dirn.ToCharArray();
                //en = ename.ToCharArray();
                byte[] byfn = new byte[6];
                //byte[] byen = new byte[3];
                for (int i = 0; i < fn.Length; i++)
                {
                    byfn[i] = Convert.ToByte(fn[i]);
                }
                for (int i = 5; i > fn.Length - 1; i--)
                {
                    byfn[i] = Convert.ToByte(' ');
                }
                //byen[0] = Convert.ToByte(en[0]);
                //byen[1] = Convert.ToByte(en[1]);
                //byen[2] = Convert.ToByte(en[2]);
                // 寻找位置写入fcb
                int bk1 = disk_.qblock();
                int bk2 = disk_.qblock();
                disk_.readblock1(block2);
                disk_.buffer1[mubiaoweizhi * 16 + 11] = Convert.ToByte(bk1);
                disk_.buffer1[mubiaoweizhi * 16 + 12] = Convert.ToByte(bk2);
                disk_.buffer1[mubiaoweizhi * 16 + 0] = byfn[0];
                disk_.buffer1[mubiaoweizhi * 16 + 1] = byfn[1];
                disk_.buffer1[mubiaoweizhi * 16 + 2] = byfn[2];
                disk_.buffer1[mubiaoweizhi * 16 + 3] = byfn[3];
                disk_.buffer1[mubiaoweizhi * 16 + 4] = byfn[4];
                disk_.buffer1[mubiaoweizhi * 16 + 5] = byfn[5];
                //disk_.buffer1[mubiaoweizhi * 16 + 6] = byen[0];
                //disk_.buffer1[mubiaoweizhi * 16 + 7] = byen[1];
                //disk_.buffer1[mubiaoweizhi * 16 + 8] = byen[2];
                disk_.buffer1[mubiaoweizhi * 16 + 15] = Convert.ToByte(1);
                disk_.buffer1[mubiaoweizhi * 16 + 9] = Convert.ToByte(0);

                disk_.writeblock1(block2);
            }
            else
            {
                //disk_.readblock1(1);
                char[] fcb = new char[16];
                char[] fn = new char[dirn.Length];
                //char[] en = new char[ename.Length];
                fn = dirn.ToCharArray();
                //en = ename.ToCharArray();
                byte[] byfn = new byte[6];
                //byte[] byen = new byte[3];
                for (int i = 0; i < fn.Length; i++)
                {
                    byfn[i] = Convert.ToByte(fn[i]);
                }
                for (int i = 5; i > fn.Length - 1; i--)
                {
                    byfn[i] = Convert.ToByte(' ');
                }
                //byen[0] = Convert.ToByte(en[0]);
                //byen[1] = Convert.ToByte(en[1]);
                //byen[2] = Convert.ToByte(en[2]);
                // 寻找位置写入fcb
                int bk1 = disk_.qblock();
                int bk2 = disk_.qblock();
                disk_.readblock1(block1);
                disk_.buffer1[mubiaoweizhi * 16 + 11] = Convert.ToByte(bk1);
                disk_.buffer1[mubiaoweizhi * 16 + 12] = Convert.ToByte(bk2);
                disk_.buffer1[mubiaoweizhi * 16 + 0] = byfn[0];
                disk_.buffer1[mubiaoweizhi * 16 + 1] = byfn[1];
                disk_.buffer1[mubiaoweizhi * 16 + 2] = byfn[2];
                disk_.buffer1[mubiaoweizhi * 16 + 3] = byfn[3];
                disk_.buffer1[mubiaoweizhi * 16 + 4] = byfn[4];
                disk_.buffer1[mubiaoweizhi * 16 + 5] = byfn[5];
                //disk_.buffer1[mubiaoweizhi * 16 + 6] = byen[0];
                //disk_.buffer1[mubiaoweizhi * 16 + 7] = byen[1];
                //disk_.buffer1[mubiaoweizhi * 16 + 8] = byen[2];
                disk_.buffer1[mubiaoweizhi * 16 + 15] = Convert.ToByte(1);
                disk_.buffer1[mubiaoweizhi * 16 + 9] = Convert.ToByte(0);

                disk_.writeblock1(block1);
            }
            return true;
        }
        public bool deletefile(string filefullname)//删除文件
        {
            string filename = "";
            string extname = "";
            splitfilename(filefullname, ref filename, ref extname);
            string[] paths;
            int mubiaoweizhi = -1;
            paths = splitfullpath(currentdir);

            if (paths[0] == "C")
            {
                disk_.diskfilename = disk_.diskfile[0];
            }
            else if (paths[0] == "D")
            {
                disk_.diskfilename = disk_.diskfile[1];
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -