码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 网盘——文件重命名


    文件重命名具体步骤如下:

    目录

    1、具体步骤

    2、代码实现

    2.1、添加重命名文件的槽函数

    2.2、关联重命名文件夹信号槽

    2.3、添加重命名文件的协议

    2.4、添加槽函数定义

    2.5、服务器

    2.6、添加重命名文件的case

    2.7、客户端接收回复

    3、测试

    3.1、点击重命名文件


    1、具体步骤

    A、客户端发送重命名请求(包含目录信息,要修改的文件名以及新文件名)

    B、服务器收到请求之后,根据该请求中的目录信息以及新旧文件名字,对文件进行重命名,并回复到客户端

    C、客户端收到回复信息之后,对该信息进行显示,通知用户重命名成功或者失败

    2、代码实现

    2.1、添加重命名文件的槽函数

    1. //重命名文件夹
    2. void renameFile();

    2.2、关联重命名文件夹信号槽

        connect(m_pRenamePB,SIGNAL(clicked(bool)), this, SLOT(renameFile()));

    2.3、添加重命名文件的协议

    1. ENUM_MSG_TYPE_RENAME_FILE_REQUEST, //重命名文件请求
    2. ENUM_MSG_TYPE_RENAME_FILE_RESPOND, //重命名文件回复

    2.4、添加槽函数定义

    1. void Book::renameFile()
    2. {
    3. //获得当前所在的目录
    4. QString strCurPath = TcpClient::getinstance().curPath();
    5. //获得点击重命名的文件
    6. QListWidgetItem *pItem = m_pBookListW->currentItem();
    7. //判断
    8. if(NULL==pItem)
    9. {
    10. QMessageBox::warning(this,"重命名文件","请选择要重命名的文件");
    11. }
    12. else
    13. {
    14. //获得旧的文件名字
    15. QString strOldName = pItem->text();
    16. //获得新的的文件名字
    17. QString strNewName = QInputDialog::getText(this,"重命名文件","请输入新的文件名");
    18. if(!strNewName.isEmpty())
    19. {
    20. //存放
    21. //路径太长了,放在caMsg里面,名字就放在caData里面
    22. PDU *pdu =mkPDU(strCurPath.size()+1);
    23. pdu->uiMsgType=ENUM_MSG_TYPE_RENAME_FILE_REQUEST;
    24. strncpy(pdu->caData,strOldName.toStdString().c_str(),strOldName.size());
    25. strncpy(pdu->caData+32,strNewName.toStdString().c_str(),strNewName.size());
    26. memcpy(pdu->caMsg,strCurPath.toStdString().c_str(),strCurPath.size());
    27. //发送给服务器
    28. TcpClient::getinstance().getTcpSocket().write((char*)pdu,pdu->uiPDULen);
    29. free(pdu);
    30. pdu=NULL;
    31. }
    32. else {
    33. QMessageBox::warning(this,"重命名文件","新文件名不能为空");
    34. }
    35. }
    36. }

    2.5、服务器

    2.6、添加重命名文件的case

    1. case ENUM_MSG_TYPE_RENAME_FILE_REQUEST:
    2. {
    3. char caOldName[32] = {'\0'};
    4. char caNewName[32] = {'\0'};
    5. strncpy(caOldName,pdu->caData,32);
    6. strncpy(caNewName,pdu->caData+32,32);
    7. //产生一块空间,将传过来的路径拷贝出来
    8. char *pPath = new char[pdu->uiMsgLen];
    9. memcpy(pPath,pdu->caMsg,pdu->uiMsgLen);
    10. //拼接成新旧两条路径
    11. QString strOldPath = QString("%1/%2").arg(pPath).arg(caOldName);
    12. QString strNewPath = QString("%1/%2").arg(pPath).arg(caNewName);
    13. qDebug()<<strOldPath;
    14. qDebug()<<strNewPath;
    15. QDir dir;
    16. bool ret = dir.rename(strOldPath,strNewPath);
    17. PDU *respdu = mkPDU(0);
    18. respdu->uiMsgType=ENUM_MSG_TYPE_RENAME_FILE_RESPOND;
    19. if(ret)
    20. {
    21. //重命名成功
    22. memcpy(respdu->caData,RENAME_FILE_OK,strlen(RENAME_FILE_OK));
    23. }
    24. else {
    25. //重命名失败
    26. memcpy(respdu->caData,RENAME_FILE_FAILED,strlen(RENAME_FILE_FAILED));
    27. }
    28. //发送
    29. write((char*)respdu, respdu->uiPDULen);
    30. free(respdu);
    31. respdu =NULL;
    32. break;
    33. }

    2.7、客户端接收回复

    1. //---------------------重命名文件------------------------
    2. case ENUM_MSG_TYPE_RENAME_FILE_RESPOND:
    3. {
    4. QMessageBox::information(this,"重命名文件",pdu->caData);
    5. break;
    6. }

    3、测试

    3.1、点击重命名文件

    成功

  • 相关阅读:
    【性能测试】中间件优化
    域前置通信过程和溯源思路
    【String 类 常用方法详解和归类】全网最细总结
    Ubuntu install vncserver
    ARouter遇到的坑记录 There is no route match the path
    pthread_detach函数的应用
    BGP&BGP4原理
    python爬虫学习第二十八天-------了解scrapy(二十八天)
    C语言实现将密码译回原文,并输出密码和原文
    QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo
  • 原文地址:https://blog.csdn.net/wjl990316fddwjl/article/details/137957031
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号