• 8504阅读
  • 3回复

自己用QT写的一断复制文件夹的代码 [复制链接]

上一主题 下一主题
离线blueliang
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-27
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
刚开始学习QT,写了一个复制文件夹的小程序,调试已经成功。拿出来与大家分享一下,还请大虾们批评指正里面不当之处。


#include <QDir>
#include <iostream>
#include <qtextcodec.h>
#include <qfile.h>
#include <qstring.h>
QDir dirfrom("/tmp/sdd") ;  //源路径
QDir dirto("/tmp/sdd1");    //目标路径所在位置
int dirlist()              //列出所有文件,并复制
{
    QFile file;
    QFileInfoList list = dirfrom.entryInfoList();
    //std::cout <<"a1"<<std::endl;
    for (int i = 0; i < list.size(); ++i)
    {
        QFileInfo fileInfo = list.at(i);
        if ((fileInfo.fileName() != ".") && (fileInfo.fileName()!=".."))
        {
                if(fileInfo.isDir())    //判断是否为目录
                {
        dirfrom.setPath(dirfrom.path()+"/"+fileInfo.fileName()) ;
                dirto.mkdir(dirto.path()+"/"+fileInfo.fileName());
                dirto.setPath(dirto.path()+"/"+fileInfo.fileName());
                dirlist();    //递归调用
                dirfrom.cdUp();
        dirto.cdUp();
                }
        else
                {
                  QString s;                               
                s = dirfrom.relativeFilePath(fileInfo.absoluteFilePath());        //取得文件相对目标目录的相对路径   
                file.copy(fileInfo.absoluteFilePath(),dirto.path()+"/"+s);    //复制代码

                }
        }
    }
    return 0;
}
int main(int argc, char *argv[])
{
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));    //使中文支持正常
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
  QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
  dirlist();
  return 0;
}
离线water_wf

只看该作者 1楼 发表于: 2008-11-27
支持一下
离线long5337

只看该作者 2楼 发表于: 2009-01-17
顶一下
离线long5337

只看该作者 3楼 发表于: 2009-01-18
顶一下呀?
快速回复
限100 字节
 
上一个 下一个