Skip to content
Snippets Groups Projects
qtlib_file.cpp 1.97 KiB
Newer Older
  • Learn to ignore specific revisions
  • akiraohgaki's avatar
    akiraohgaki committed
    /**
    
    akiraohgaki's avatar
    akiraohgaki committed
     * qtlib
    
    akiraohgaki's avatar
    akiraohgaki committed
     *
     * @author      Akira Ohgaki <akiraohgaki@gmail.com>
     * @copyright   Akira Ohgaki
    
    akiraohgaki's avatar
    akiraohgaki committed
     * @license     https://opensource.org/licenses/LGPL-3.0
    
    akiraohgaki's avatar
    akiraohgaki committed
     * @link        https://github.com/akiraohgaki/qtlib
    
    akiraohgaki's avatar
    akiraohgaki committed
     */
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include "qtlib_file.h"
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    #include <QIODevice>
    #include <QTextStream>
    #include <QFile>
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    namespace qtlib {
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    File::File(const QString &path, QObject *parent)
        : QObject(parent), path_(path)
    
    akiraohgaki's avatar
    akiraohgaki committed
    {}
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    File::File(const File &other, QObject *parent)
        : QObject(parent)
    
    akiraohgaki's avatar
    akiraohgaki committed
    {
        setPath(other.path());
    }
    
    File &File::operator =(const File &other)
    {
        setPath(other.path());
        return *this;
    }
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    QString File::path() const
    {
        return path_;
    }
    
    void File::setPath(const QString &path)
    {
        path_ = path;
    }
    
    bool File::exists()
    {
    
    akiraohgaki's avatar
    akiraohgaki committed
        return QFile(path()).exists();
    
    akiraohgaki's avatar
    akiraohgaki committed
    }
    
    QByteArray File::readData()
    {
        QByteArray data;
        QFile file(path());
        if (file.exists() && file.open(QIODevice::ReadOnly)) {
            data = file.readAll();
            file.close();
        }
        return data;
    }
    
    bool File::writeData(const QByteArray &data)
    {
        QFile file(path());
        if (file.open(QIODevice::WriteOnly)) {
            file.write(data);
            file.close();
            return true;
        }
        return false;
    }
    
    QString File::readText()
    {
        QString data;
        QFile file(path());
        if (file.exists() && file.open(QIODevice::ReadOnly | QIODevice::Text)) {
            QTextStream in(&file);
            in.setCodec("UTF-8");
            data = in.readAll();
            file.close();
        }
        return data;
    }
    
    bool File::writeText(const QString &data)
    {
        QFile file(path());
        if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
            QTextStream out(&file);
            out.setCodec("UTF-8");
            out << data;
            file.close();
            return true;
        }
        return false;
    }
    
    bool File::copy(const QString &newPath)
    {
    
    akiraohgaki's avatar
    akiraohgaki committed
        return QFile(path()).copy(newPath);
    
    akiraohgaki's avatar
    akiraohgaki committed
    }
    
    bool File::move(const QString &newPath)
    {
    
    akiraohgaki's avatar
    akiraohgaki committed
        return QFile(path()).rename(newPath);
    
    akiraohgaki's avatar
    akiraohgaki committed
    }
    
    bool File::remove()
    {
    
    akiraohgaki's avatar
    akiraohgaki committed
        return QFile(path()).remove();
    
    akiraohgaki's avatar
    akiraohgaki committed
    }
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    } // namespace qtlib