Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Copying the file content
Forum Update on Tuesday, May 27th 2025

Copying the file content

Scheduled Pinned Locked Moved Solved General and Desktop
copyfileqt5file readfile write
32 Posts 6 Posters 7.5k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S sierdzio
    11 Jan 2021, 07:09

    @suslucoder said in Copying the fle content:

    qDebug does not give anytghing on the secreen

    This means that MyThread::writeData() function is not called at all! And that implies the problem lies somewhere else (not in QFile::copy()).

    D Offline
    D Offline
    deleted286
    wrote on 11 Jan 2021, 07:32 last edited by
    #9

    @sierdzio I've already called it with start() function. Doesnt it started the thread?

    1 Reply Last reply
    0
    • S Offline
      S Offline
      sierdzio
      Moderators
      wrote on 11 Jan 2021, 07:35 last edited by
      #10

      Yes, start() starts the thread, but it does not mean your writeData() is called. If that were true, you would see your qDebug() output, because it is not in any if conditions - it should be printed every time writeData() is called.

      (Z(:^

      D 1 Reply Last reply 11 Jan 2021, 07:40
      0
      • S sierdzio
        11 Jan 2021, 07:35

        Yes, start() starts the thread, but it does not mean your writeData() is called. If that were true, you would see your qDebug() output, because it is not in any if conditions - it should be printed every time writeData() is called.

        D Offline
        D Offline
        deleted286
        wrote on 11 Jan 2021, 07:40 last edited by deleted286 1 Nov 2021, 07:43
        #11

        @sierdzio yes you are right. I've called the function. Thread is working now. But copying issue does not work.

        1 Reply Last reply
        0
        • S Offline
          S Offline
          sierdzio
          Moderators
          wrote on 11 Jan 2021, 07:44 last edited by
          #12

          I don't know either, you have not shown any code or stated how you want it all to work... so all I can say is "read the docs" :D QThread has a nice example and detailed description: https://doc.qt.io/qt-5/qthread.html#details

          (Z(:^

          D 1 Reply Last reply 11 Jan 2021, 07:45
          0
          • S sierdzio
            11 Jan 2021, 07:44

            I don't know either, you have not shown any code or stated how you want it all to work... so all I can say is "read the docs" :D QThread has a nice example and detailed description: https://doc.qt.io/qt-5/qthread.html#details

            D Offline
            D Offline
            deleted286
            wrote on 11 Jan 2021, 07:45 last edited by
            #13

            @sierdzio I just want, when writeData() thread is called, copy the contents into new txt.

            J 1 Reply Last reply 11 Jan 2021, 07:46
            0
            • D deleted286
              11 Jan 2021, 07:45

              @sierdzio I just want, when writeData() thread is called, copy the contents into new txt.

              J Offline
              J Offline
              J.Hilk
              Moderators
              wrote on 11 Jan 2021, 07:46 last edited by J.Hilk 1 Nov 2021, 07:46
              #14

              @suslucoder
              QThread has a started signal you connect that signal to your slot


              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              D 1 Reply Last reply 11 Jan 2021, 08:09
              3
              • J J.Hilk
                11 Jan 2021, 07:46

                @suslucoder
                QThread has a started signal you connect that signal to your slot

                D Offline
                D Offline
                deleted286
                wrote on 11 Jan 2021, 08:09 last edited by
                #15

                @J-Hilk My thread has working now. But copying does not occur

                J 1 Reply Last reply 11 Jan 2021, 08:10
                0
                • D deleted286
                  11 Jan 2021, 08:09

                  @J-Hilk My thread has working now. But copying does not occur

                  J Offline
                  J Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 11 Jan 2021, 08:10 last edited by
                  #16

                  @suslucoder So, what does copy() return?

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  D 1 Reply Last reply 11 Jan 2021, 08:15
                  1
                  • J jsulm
                    11 Jan 2021, 08:10

                    @suslucoder So, what does copy() return?

                    D Offline
                    D Offline
                    deleted286
                    wrote on 11 Jan 2021, 08:15 last edited by
                    #17

                    @jsulm it returns nothing, Either true or false

                    J J 2 Replies Last reply 11 Jan 2021, 08:16
                    0
                    • D deleted286
                      11 Jan 2021, 08:15

                      @jsulm it returns nothing, Either true or false

                      J Offline
                      J Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on 11 Jan 2021, 08:16 last edited by
                      #18

                      @suslucoder said in Copying the file content:

                      it returns nothing, Either true or false

                      ?
                      It returns a boolean.
                      Again: what does it return?!

                      qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");
                      

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      D 1 Reply Last reply 11 Jan 2021, 08:18
                      0
                      • D deleted286
                        11 Jan 2021, 08:15

                        @jsulm it returns nothing, Either true or false

                        J Offline
                        J Offline
                        J.Hilk
                        Moderators
                        wrote on 11 Jan 2021, 08:16 last edited by
                        #19

                        @suslucoder then the function isn't called.

                        Please post what you actually have in your code, otherwise no-one will be able to help you


                        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                        Q: What's that?
                        A: It's blue light.
                        Q: What does it do?
                        A: It turns blue.

                        1 Reply Last reply
                        0
                        • J jsulm
                          11 Jan 2021, 08:16

                          @suslucoder said in Copying the file content:

                          it returns nothing, Either true or false

                          ?
                          It returns a boolean.
                          Again: what does it return?!

                          qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");
                          
                          D Offline
                          D Offline
                          deleted286
                          wrote on 11 Jan 2021, 08:18 last edited by
                          #20

                          @jsulm it returns false. Ekran görüntüsü 2021-01-11 111741.png

                          #include "mythread.h"
                          #include "mainwindow.h"
                          #include <QtCore>
                          #include <QDebug>
                          #include <QFile>
                          #include <QTimer>
                          #include <QThread>
                          #include <QMutex>
                          #include <QQueue>
                          #include <QMessageBox>
                          #include <QApplication>
                          #include <QtWidgets/QApplication>
                          #include <QtWidgets/QMainWindow>
                          #include <QFileDialog>
                          #include <QMainWindow>
                          
                          QFile file("C:/Users/ilknu/Documents/MyThread/deneme.txt");
                          
                          
                          MyThread::MyThread(QObject* parent)
                              : QThread(parent)
                          {
                              writeData();
                          }
                          
                          MyThread::~MyThread()
                          {
                          
                          }
                          
                          void MyThread::writeData()
                          {
                              QFile file2("C:/Users/ilknu/Documents/MyThread/new.txt");
                              QFile::copy("C:/Users/ilknu/Documents/MyThread/deneme.txt","C:/Users/ilknu/Documents/MyThread/new.txt" );
                              qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");
                              qDebug() << "im working in writing thread";
                          
                              emit writingDone();
                          
                          }
                          
                          void MyThread::run()  //Reading file from txt with thread1
                          {
                          
                              if (file.open(QIODevice::ReadOnly))
                              {
                                  QTextStream in (&file);
                                  while (!in.atEnd())
                                  {
                                      QString line = in.readAll();
                                      QStringList list = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
                                      for(const QString &entry : list)
                                      {
                                          double num = entry.toDouble();
                                          queue.enqueue(num);
                          
                                      }
                          
                          
                                      qDebug()<< "im running on worker thread " <<line;
                          
                                  } // for
                              } // while
                              file.close();
                          } // if
                          
                          J S 2 Replies Last reply 11 Jan 2021, 08:21
                          0
                          • S Offline
                            S Offline
                            sierdzio
                            Moderators
                            wrote on 11 Jan 2021, 08:20 last edited by
                            #21

                            Check if it exists:

                            qDebug() << "Source exists?" << QFile::exists("C:/Users/ilknu/Documents/MyThread/deneme.txt");
                            qDebug() << "Destination exists?" << QFile::exists("C:/Users/ilknu/Documents/MyThread/new.txt");
                            

                            You need to check destination because:

                            If a file with the name newName already exists, copy() returns false (i.e., QFile will not overwrite it).

                            (Z(:^

                            D 1 Reply Last reply 11 Jan 2021, 08:24
                            1
                            • D deleted286
                              11 Jan 2021, 08:18

                              @jsulm it returns false. Ekran görüntüsü 2021-01-11 111741.png

                              #include "mythread.h"
                              #include "mainwindow.h"
                              #include <QtCore>
                              #include <QDebug>
                              #include <QFile>
                              #include <QTimer>
                              #include <QThread>
                              #include <QMutex>
                              #include <QQueue>
                              #include <QMessageBox>
                              #include <QApplication>
                              #include <QtWidgets/QApplication>
                              #include <QtWidgets/QMainWindow>
                              #include <QFileDialog>
                              #include <QMainWindow>
                              
                              QFile file("C:/Users/ilknu/Documents/MyThread/deneme.txt");
                              
                              
                              MyThread::MyThread(QObject* parent)
                                  : QThread(parent)
                              {
                                  writeData();
                              }
                              
                              MyThread::~MyThread()
                              {
                              
                              }
                              
                              void MyThread::writeData()
                              {
                                  QFile file2("C:/Users/ilknu/Documents/MyThread/new.txt");
                                  QFile::copy("C:/Users/ilknu/Documents/MyThread/deneme.txt","C:/Users/ilknu/Documents/MyThread/new.txt" );
                                  qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");
                                  qDebug() << "im working in writing thread";
                              
                                  emit writingDone();
                              
                              }
                              
                              void MyThread::run()  //Reading file from txt with thread1
                              {
                              
                                  if (file.open(QIODevice::ReadOnly))
                                  {
                                      QTextStream in (&file);
                                      while (!in.atEnd())
                                      {
                                          QString line = in.readAll();
                                          QStringList list = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
                                          for(const QString &entry : list)
                                          {
                                              double num = entry.toDouble();
                                              queue.enqueue(num);
                              
                                          }
                              
                              
                                          qDebug()<< "im running on worker thread " <<line;
                              
                                      } // for
                                  } // while
                                  file.close();
                              } // if
                              
                              J Online
                              J Online
                              JonB
                              wrote on 11 Jan 2021, 08:21 last edited by
                              #22

                              @suslucoder
                              Did you read the documentation of QFile::Copy() for yourself?

                              Note that if a file with the name newName already exists, copy() returns false (i.e. QFile will not overwrite it).

                              So, does the destination file already exist? Does the source file also exist?

                              1 Reply Last reply
                              1
                              • D deleted286
                                11 Jan 2021, 08:18

                                @jsulm it returns false. Ekran görüntüsü 2021-01-11 111741.png

                                #include "mythread.h"
                                #include "mainwindow.h"
                                #include <QtCore>
                                #include <QDebug>
                                #include <QFile>
                                #include <QTimer>
                                #include <QThread>
                                #include <QMutex>
                                #include <QQueue>
                                #include <QMessageBox>
                                #include <QApplication>
                                #include <QtWidgets/QApplication>
                                #include <QtWidgets/QMainWindow>
                                #include <QFileDialog>
                                #include <QMainWindow>
                                
                                QFile file("C:/Users/ilknu/Documents/MyThread/deneme.txt");
                                
                                
                                MyThread::MyThread(QObject* parent)
                                    : QThread(parent)
                                {
                                    writeData();
                                }
                                
                                MyThread::~MyThread()
                                {
                                
                                }
                                
                                void MyThread::writeData()
                                {
                                    QFile file2("C:/Users/ilknu/Documents/MyThread/new.txt");
                                    QFile::copy("C:/Users/ilknu/Documents/MyThread/deneme.txt","C:/Users/ilknu/Documents/MyThread/new.txt" );
                                    qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");
                                    qDebug() << "im working in writing thread";
                                
                                    emit writingDone();
                                
                                }
                                
                                void MyThread::run()  //Reading file from txt with thread1
                                {
                                
                                    if (file.open(QIODevice::ReadOnly))
                                    {
                                        QTextStream in (&file);
                                        while (!in.atEnd())
                                        {
                                            QString line = in.readAll();
                                            QStringList list = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
                                            for(const QString &entry : list)
                                            {
                                                double num = entry.toDouble();
                                                queue.enqueue(num);
                                
                                            }
                                
                                
                                            qDebug()<< "im running on worker thread " <<line;
                                
                                        } // for
                                    } // while
                                    file.close();
                                } // if
                                
                                S Offline
                                S Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on 11 Jan 2021, 08:21 last edited by
                                #23

                                Hi,

                                @suslucoder said in Copying the file content:

                                QFile::copy("C:/Users/ilknu/Documents/MyThread/deneme.txt","C:/Users/ilknu/Documents/MyThread/new.txt" );
                                qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");

                                You do not have the same paths in the qDebug and the previous line.
                                You do realise that you are copying it twice ?

                                Interested in AI ? www.idiap.ch
                                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                D 1 Reply Last reply 11 Jan 2021, 08:24
                                4
                                • S sierdzio
                                  11 Jan 2021, 08:20

                                  Check if it exists:

                                  qDebug() << "Source exists?" << QFile::exists("C:/Users/ilknu/Documents/MyThread/deneme.txt");
                                  qDebug() << "Destination exists?" << QFile::exists("C:/Users/ilknu/Documents/MyThread/new.txt");
                                  

                                  You need to check destination because:

                                  If a file with the name newName already exists, copy() returns false (i.e., QFile will not overwrite it).

                                  D Offline
                                  D Offline
                                  deleted286
                                  wrote on 11 Jan 2021, 08:24 last edited by
                                  #24

                                  @sierdzio
                                  They exists.

                                  Ekran görüntüsü 2021-01-11 112331.png

                                  J S 2 Replies Last reply 11 Jan 2021, 08:25
                                  0
                                  • J Online
                                    J Online
                                    JonB
                                    wrote on 11 Jan 2021, 08:24 last edited by
                                    #25

                                    @SGaist , @sierdzio , @J-Hilk
                                    If QFile::copy() returns false, I don't see anywhere the user can obtain any kind of error message/reason for the failure. Does Qt not supply this by any means?

                                    1 Reply Last reply
                                    0
                                    • S SGaist
                                      11 Jan 2021, 08:21

                                      Hi,

                                      @suslucoder said in Copying the file content:

                                      QFile::copy("C:/Users/ilknu/Documents/MyThread/deneme.txt","C:/Users/ilknu/Documents/MyThread/new.txt" );
                                      qDebug() << QFile::copy("C:/Users/user/Documents/MyThread/deneme.txt", "C:/Users/user/Documents/MyThread/new.txt");

                                      You do not have the same paths in the qDebug and the previous line.
                                      You do realise that you are copying it twice ?

                                      D Offline
                                      D Offline
                                      deleted286
                                      wrote on 11 Jan 2021, 08:24 last edited by
                                      #26

                                      @SGaist I fixed it

                                      1 Reply Last reply
                                      0
                                      • D deleted286
                                        11 Jan 2021, 08:24

                                        @sierdzio
                                        They exists.

                                        Ekran görüntüsü 2021-01-11 112331.png

                                        J Online
                                        J Online
                                        JonB
                                        wrote on 11 Jan 2021, 08:25 last edited by JonB 1 Nov 2021, 08:26
                                        #27

                                        @suslucoder said in Copying the file content:

                                        They exists.

                                        And? We have all said QFile::copy() says:

                                        Note that if a file with the name newName already exists, copy() returns false (i.e. QFile will not overwrite it).

                                        So you (not we) need to do something about that.

                                        Also, as @SGaist has pointed out, you don't even have the same paths on your two QFile::copy() calls.

                                        D 1 Reply Last reply 11 Jan 2021, 08:29
                                        1
                                        • D deleted286
                                          11 Jan 2021, 08:24

                                          @sierdzio
                                          They exists.

                                          Ekran görüntüsü 2021-01-11 112331.png

                                          S Offline
                                          S Offline
                                          sierdzio
                                          Moderators
                                          wrote on 11 Jan 2021, 08:29 last edited by
                                          #28

                                          @suslucoder

                                          Then the cause is clear: destination exists, so copy() will not overwrite it. You need to remove the destination file first, before calling copy().

                                          (Z(:^

                                          D 1 Reply Last reply 11 Jan 2021, 08:30
                                          1

                                          18/32

                                          11 Jan 2021, 08:16

                                          • Login

                                          • Login or register to search.
                                          18 out of 32
                                          • First post
                                            18/32
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved