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(); }
// === 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); }