Beispiel #1
0
        private void btn_Rename_Click(object sender, EventArgs e) // 파일/폴더의 이름을 바꾼다.
        {
            BinaryFormatter serializer = new BinaryFormatter();

            if (selectedItem == null) // 선택 아이템 없으면 리턴
            {
                MessageBox.Show("삭제할 항목을 선택해 주세요.", "알림");
                return;
            }

            InputForm inForm = new InputForm();

            input = "";
            inForm.label1.Text = "바꿀 이름을 선택해 주세요(확장자명 제외)";
            inForm.ShowDialog(this);

            if (input == "") // 아무것도 입력안하면 리턴
            {
                return;
            }

            string prevName = selectedItem.SubItems[0].Text; // 원래 이름

            TcpClient     client  = fileConnect();
            NetworkStream stream  = client.GetStream();
            ReqReNamePack reqPack = new ReqReNamePack
            {
                PrevName = selectedPath + "\\" + prevName,
                ReName   = selectedPath + "\\" + input,
                FileType = selectedItem.SubItems[3].Text.ToCharArray()[0]
            };

            serializer.Serialize(stream, reqPack);  // 요청 전송

            Pack resPack = (Pack)serializer.Deserialize(stream);

            if (resPack.PackType == CONSTANTS.TYPE_ERROR)
            {
                MessageBox.Show(CONSTANTS.Err_String[resPack.Flag], "알림");
                return;
            }

            if (selectedItem.SubItems[3].Text == "f") // 바꾼것이 파일일경우 아이템의 Name 값을 바꾼다. 아래는 확장자명 떼서 붙이는 문자열 추출
            {
                selectedItem.SubItems[0].Text = input + prevName.Substring(prevName.LastIndexOf('.'), prevName.Length - prevName.LastIndexOf('.'));
            }
            else
            {
                selectedItem.SubItems[0].Text = input;
                selectedNode.Nodes[selectedItem.Index].Text = input;
            }

            list_File.Focus(); // 바뀐 아이템이 선택되도록 한다.
            stream.Close();
            client.Close();
        }
Beispiel #2
0
        // === ReNameFile() (TYPE_REQ_RENAME) ==== //
        private void ReNameFile(ReqReNamePack reqPack) // 디렉토리/파일 이름변경
        {
            Pack   resPack  = new Pack();
            string prevPath = rootPath + "\\" + reqPack.PrevName; // 원래 경로
            string ensuPath = rootPath + "\\" + reqPack.ReName;   // 바꿀 경로

            reqPack.Flag = CONSTANTS.FLAG_SUCCESS;

            try
            {
                if (reqPack.FileType == 'd')
                {
                    if (Directory.Exists(ensuPath))
                    {
                        resPack.PackType = CONSTANTS.TYPE_ERROR;
                        resPack.Flag     = CONSTANTS.ERROR_EXIST_DIR;
                        serializer.Serialize(clientStream, resPack);
                        return;
                    }

                    DirectoryInfo di = new DirectoryInfo(prevPath);
                    di.MoveTo(ensuPath); // 이름바꾸기
                }
                else if (reqPack.FileType == 'f')
                {
                    string ext = prevPath.Substring(prevPath.LastIndexOf('.'), prevPath.Length - prevPath.LastIndexOf('.')); // 확장자명 추출

                    if (File.Exists(ensuPath + ext))
                    {
                        resPack.PackType = CONSTANTS.TYPE_ERROR;
                        resPack.Flag     = CONSTANTS.ERROR_EXIST_FILE;
                        serializer.Serialize(clientStream, resPack);
                        return;
                    }
                    FileInfo fi = new FileInfo(prevPath);
                    fi.MoveTo(ensuPath + ext); // 이름바꾸기
                }
            }
            catch (ArgumentException)
            {
                resPack.PackType = CONSTANTS.TYPE_ERROR;
                resPack.Flag     = CONSTANTS.ERROR_INVALID_CHAR;
            }

            serializer.Serialize(clientStream, resPack);
            Console.WriteLine("<->디렉토리/파일 이름 변경 : {0} -> {1} ", prevPath, ensuPath);
        }