Как переместить файл в другой существующий каталог в Qt

Я новичок в Qt, одна часть моего проекта перемещает существующий файл в другой существующий каталог? Может ли кто-нибудь привести мне конкретный пример? Я не уверен, следует ли мне использовать Qfile::rename(). стараюсь так писать

QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c.txt"); 

но ошибка не может вызвать функцию-член 'bool QDir::rename(const QString&, const QString&)' без объекта QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c. текст"); ^

Извините, ребята, я ошибаюсь, я задал такой неясный и такой глупый вопрос, мне очень жаль тратить ваше время, я новичок, прежде чем я задал этот вопрос, я действительно действительно не заметил, что этот вопрос был задан раньше, потому что мой уровень слишком низкий. Поскольку я слишком наивен, я не могу больше задавать вопросы, поэтому, пожалуйста, простите меня за этот вопрос, я слишком напряжен, потому что прохожу стажировку в компании, мой проект для меня довольно сложный, поэтому у меня нет другого выбора, чтобы сделать это. пустая трата времени, наконец, я хочу сказать спасибо тем, кто видел мои вопросы раньше.


person innocent boy    schedule 17.07.2017    source источник
comment
Вы можете использовать функцию QFile::copy(), чтобы сначала скопировать файл из одного каталога в другой, а затем удалить скопированный файл QFile::remove().   -  person vahancho    schedule 17.07.2017
comment
Прежде чем задать вопрос, вы должны сделать поиск, на ваш вопрос уже ответили раньше. Чтобы задать хороший вопрос, вы должны прочитать следующее: stackoverflow.com/help/how-to-ask   -  person eyllanesc    schedule 17.07.2017


Ответы (2)


Согласно документации:

bool QFile::rename(const QString &newName)

Переименовывает файл, указанный в настоящее время с помощью fileName(), в newName. Возвращает true в случае успеха; в противном случае возвращает ложь.

В вашем случае необходимо сделать следующее:

QFile file("/home/joshua/test.txt");
file.rename("/home/joshua/test/test_c.txt");
person eyllanesc    schedule 17.07.2017
comment
Спасибо. Это сработало. Мне было интересно, почему функция QFile::copy не удалась, когда я попытался скопировать файл с одного диска на другой диск. - person Manjunath; 23.10.2018
comment
@Manjunath было бы здорово предложить этот вопрос, предоставив минимально воспроизводимый пример, напрямую спрашивая, почему copy() не работает и если вы переименуете(), я также думаю, что должно появиться сообщение об ошибке, в котором указывается причина. - person eyllanesc; 23.10.2018

QDir::rename() является методом экземпляра QDir, поэтому вам нужен объект QDir для его вызова (и этот каталог будет базой для передаваемых имен файлов). Для вашего примера что-то вроде:

QDir d("/home/joshua");
bool renamed = d.rename("test.txt" , "test/test_c.txt");

Вы захотите использовать возвращаемое значение.

В качестве альтернативы вы можете использовать QFile::rename() - каталог по умолчанию для текущего рабочего каталога процесса.

person Toby Speight    schedule 17.07.2017