Exemplo n.º 1
0
QStringList StorageGroup::GetFileList(QString Path, bool recursive)
{
    QStringList files;
    QString tmpDir;
    QDir d;

    for (QStringList::Iterator it = m_dirlist.begin(); it != m_dirlist.end(); ++it)
    {
        tmpDir = *it + Path;

        d.setPath(tmpDir);
        if (d.exists())
            files << GetDirFileList(tmpDir, Path, recursive);
    }

    return files;
}
Exemplo n.º 2
0
QStringList StorageGroup::GetDirFileList(QString dir, QString base,
                                         bool recursive)
{
    QStringList files;
    QDir d(dir);

    if (!d.exists())
        return files;

    if (base.split("/").size() > 20)
    {
        LOG(VB_GENERAL, LOG_ERR, LOC + "GetDirFileList(), 20 levels deep, "
                                       "possible directory loop detected.");
        return files;
    }

    if (!base.isEmpty())
        base += "/";

    if (recursive)
    {
        QStringList list =
            d.entryList(QDir::Dirs|QDir::NoDotAndDotDot|QDir::Readable);

        for (QStringList::iterator p = list.begin(); p != list.end(); ++p)
        {
            LOG(VB_FILE, LOG_DEBUG, LOC +
                QString("GetDirFileList: Dir: %1/%2").arg(base).arg(*p));
            files << GetDirFileList(dir + "/" + *p, base + *p, true);
        }
    }

    QStringList list = d.entryList(QDir::Files|QDir::Readable);
    for (QStringList::iterator p = list.begin(); p != list.end(); ++p)
    {
        LOG(VB_FILE, LOG_DEBUG, LOC +
            QString("GetDirFileList: File: %1%2").arg(base).arg(*p));
        if (recursive)
            files.append(base + *p);
        else
            files.append(*p);
    }

    return files;
}
Exemplo n.º 3
0
    void CopyDir(std::string from_dir_name, std::string to_dir_name, bool copy_this)
    {
        try{
            if (false == AccessDir(from_dir_name))
            {
                return;
            }

            // 防止拷贝自己
            if (from_dir_name == to_dir_name)
            {
                return;
            }

            if ( AccessDir(to_dir_name) == false)
                MakeDir(to_dir_name);

            std::list<std::string> file_list;

            GetDirFileList(from_dir_name, file_list);

            for (std::list<std::string>::iterator it = file_list.begin();
                it != file_list.end(); ++it)
            {
                std::string new_name = *it;
                std::string file_name = new_name.substr(from_dir_name.size() + (boost::filesystem::current_path()).string().length());

                new_name = to_dir_name + file_name;

                FMove(from_dir_name + "\\" + file_name, new_name, false);
            }
            //std::cout <<"CopyDir\n";
        }
        catch(boost::filesystem::filesystem_error e)
        {
            //std::cout <<"CopyDir crash\n";
        }
        
    }