Russian Qt Forum
Июнь 03, 2024, 19:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Считывание файлов в цикле  (Прочитано 12610 раз)
kuziashagrath85
Гость
« : Август 05, 2012, 13:07 »

В папке есть 600 файлов. Задача - поочередно в цикле их открыть, переписать в другой файл с таким же названием, но со строкой "_result"(например, сведения из файла  U20089 переписать в файл U20089_result ). Сделать надо в цикле. Что я делаю(точнее,стараюсь сделать)-в цикле открываю файл, затем открываю второй файл-переписываю его-закрываю.

Код:
#include <QDir>
 #include <QtCore>
 #include <iostream>
#include <QFile>



 int main(int argc, char *argv[]) {
     QCoreApplication app(argc, argv);    //консольное приложение
     QDir dir("E:/Zadanie_Semenova");  //объявляем объект работы с папками
     QFileInfoList list = dir.entryInfoList();     //получаем список файлов директории

   for (int i = 0; i < list.size(); ++i) {
       QFile file1("%") =  FILE(i);
       QFile file2("%_result")=File(i);
       if (file2.open(file1.open(QIODevice::ReadOnly)){
          QByteArray a=file1.ReadAll;
     }
        file1.open(QIODevice::WriteOnly);
               file2.writeBlock(a));

   file1.close();
   file2.close();
 }
     return 0;
 }
вот код-подскажите, где ошибка?
Записан
mutineer
Гость
« Ответ #1 : Август 05, 2012, 13:25 »

Цитировать
QFile file1("%") =  FILE(i);
QFile file2("%_result")=File(i);

что это за FILE(i) и File(i) ?
И что эти строки вообще должны значить?



Цитировать
if (file2.open(file1.open(QIODevice::ReadOnly)){
          QByteArray a=file1.ReadAll;
}     
переменной а не существует вне этого if
Записан
kuziashagrath85
Гость
« Ответ #2 : Август 05, 2012, 13:39 »

Цитировать
QFile file1("%") =  FILE(i);
QFile file2("%_result")=File(i);

что это за FILE(i) и File(i) ?
И что эти строки вообще должны значить?

По идее эти строки должны были бы означать то, что  я открываю старый файл с каким то именем, а затем открываю новый файл с точно таким же именем, но с добавлением названия "result"=))

итировать
if (file2.open(file1.open(QIODevice::ReadOnly)){
          QByteArray a=file1.ReadAll;
}     
переменной а не существует вне этого if

не совсем понял утверждение=)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Август 05, 2012, 13:44 »

По идее эти строки должны были бы означать то, что  я открываю старый файл с каким то именем, а затем открываю новый файл с точно таким же именем, но с добавлением названия "result"=))
А почему Вы так решили? Вам кто-то это сказал или где-то прочитали, ну или просто Вам так хотелось бы?
Записан
mutineer
Гость
« Ответ #4 : Август 05, 2012, 13:46 »

По идее эти строки должны были бы означать то, что  я открываю старый файл с каким то именем, а затем открываю новый файл с точно таким же именем, но с добавлением названия "result"=))

То есть это псевдокод? ок

не совсем понял утверждение=)

Про локальные переменные слышал? При входе в блок, начинающийся на { создается переменная а, а при выходе из блока (выход обозначен символом } ) эта переменная уничтожается



Ну и это, ты тут гадание решил устроить? У тебя что-то конкретное не работает, или это викторина "найди такую же ошибку, которую нашел автор поста"?
Записан
kuziashagrath85
Гость
« Ответ #5 : Август 05, 2012, 14:11 »

По идее эти строки должны были бы означать то, что  я открываю старый файл с каким то именем, а затем открываю новый файл с точно таким же именем, но с добавлением названия "result"=))

То есть это псевдокод? ок

Хорошо, тогда поставлю вопрос так: как сделать так, чтобы файл открывался? Какой оператор нужно поставить?
Записан
kuziashagrath85
Гость
« Ответ #6 : Август 05, 2012, 14:17 »

вот код-подскажите, где ошибка?
Везде.

а поконкретнее?
Записан
andrew.k
Гость
« Ответ #7 : Август 05, 2012, 14:19 »

Цитировать
вот код-подскажите, где ошибка?
Везде.

P.S. Шо, студент? Лаба не получается?

P.P.S. А! Понял! Есть такой тип заданий. Найдите ошибку называется.
Есть такой тип заданий, которые внезапно надо срочно сдать... завтра! Улыбающийся
Записан
mutineer
Гость
« Ответ #8 : Август 05, 2012, 14:25 »

Хорошо, тогда поставлю вопрос так: как сделать так, чтобы файл открывался? Какой оператор нужно поставить?

документацию по QFile смотрел? там есть пример

ну и скажи в чем пробема у тебя. не компилируется? не запускается? не создат файлы? форматирует диск?
Записан
kuziashagrath85
Гость
« Ответ #9 : Август 05, 2012, 15:01 »

пример есть, но для просмотра 1 файла,а не группы.Если можешь показать этот пример, я буду счастлив
Записан
mutineer
Гость
« Ответ #10 : Август 05, 2012, 15:38 »

Перебираешь список файлов и работаешь с каждым как в примере
Записан
kuziashagrath85
Гость
« Ответ #11 : Август 05, 2012, 18:00 »

Хм, вот код для записи существующего файла в новый файл.
Код:
QFile file1("text1");
QFile file2("text2");

QbyteArray a=file1.ReadAll();
file2.writeBlock(a);
file1.close;
file2.close;


Но он работает только для одного файла-как переписать цикл для него-если можешь,еще раз поясни,пожалуйста,я не совсем понимаю,как цикл здесь ставить
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #12 : Август 05, 2012, 18:05 »

а зачем считывать содержимое файла и записывать его в новый если можно просто скопировать файл через QFile::copy()?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #13 : Август 05, 2012, 18:33 »

Хм, вот код для записи существующего файла в новый файл.
Код:
QFile file1("text1");
QFile file2("text2");

QbyteArray a=file1.ReadAll();
file2.writeBlock(a);
file1.close;
file2.close;


Но он работает только для одного файла-как переписать цикл для него-если можешь,еще раз поясни,пожалуйста,я не совсем понимаю,как цикл здесь ставить

Этот код не работает даже для одного файла, потому что содержит ошибки. Значит запускать ты его и не пытался, а просто троллишь тут нас
Записан
Bepec
Гость
« Ответ #14 : Август 05, 2012, 22:43 »

Уважаемый kuziashagrath85, а по какой специальности вы защитились, если не секрет?

PS Взято с Мамбы -
Цитировать
Состояние духа в настоящий момент:
    Готов к великим свершениям Подмигивающий
Веселый

PPS йоптель, меня спалили... Теперь:
Цитировать
Анкета недоступна
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 19.