Russian Qt Forum
Ноябрь 26, 2024, 02:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание файла  (Прочитано 5268 раз)
makar182
Гость
« : Август 21, 2014, 22:16 »

Доброго времени суток,

При открытии (в данном случае создании) файла и работы с ним, файл не появляется по указанному в описании пути, но он появляется в C:Пользователи/Пользователь/AppData/Local/VirtualStore. Почему так происходит и как заставить его появляется в указанной директории?

Код:
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QFileInfo>
#include <QString>

void Write(QString fileName)
{
    QFile mFile(fileName);

     if (!mFile.open(QFile::WriteOnly | QFile::Text))
     {
         qDebug() << "Could not open the file!";
         return;
     }

     QTextStream out(&mFile);
     out << "Hello world!";
     mFile.flush();
     mFile.close();

}

void Read(QString fileName)
{
    QFile mFile(fileName);

     if (!mFile.open(QFile::ReadOnly | QFile::Text))
     {
         qDebug() << "Could not open the file!";
         return;
     }

     QTextStream in(&mFile);
     QString mText = in.readAll();
     qDebug() << mText;

     mFile.close();
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString mFileName = "C:/myfile.txt";

    Write(mFileName);
    Read(mFileName);

    return a.exec();
}
Записан
Bepec
Гость
« Ответ #1 : Август 21, 2014, 22:17 »

Права Права.
Записан
makar182
Гость
« Ответ #2 : Август 21, 2014, 22:24 »

Права Права.

Можно по-подробнее? Это уже, кстати, на Windows 8.
Записан
Bepec
Гость
« Ответ #3 : Август 21, 2014, 22:36 »

Тогда ничем не помогу. Я её боюсь как чёрт ладана Улыбающийся

PS я лично искал как её выключить нормально минут 40 Улыбающийся Пришлось лезть с другого компа в инет и там найти таки способ Веселый
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Август 21, 2014, 22:43 »

пользователь, из-под которого работает программа, не имеет прав записи в каталог. Если это системный каталог, что включается механизм Virtual Store, и поэтому файл появляется именно там где он появляется, а не в C:\. Решение - запуск от админа или временное повышение привилегий с помощью UAC.
Записан
makar182
Гость
« Ответ #5 : Август 21, 2014, 22:52 »

пользователь, из-под которого работает программа, не имеет прав записи в каталог. Если это системный каталог, что включается механизм Virtual Store, и поэтому файл появляется именно там где он появляется, а не в C:\. Решение - запуск от админа или временное повышение привилегий с помощью UAC.

А как запустить Qt от администратора на Windows 8? Что-то я туплю уже на ночь глядя Смеющийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Август 21, 2014, 23:02 »

А как запустить Qt от администратора на Windows 8? Что-то я туплю уже на ночь глядя Смеющийся

Qt - это DLL библиотека, её нельзя запустить. Запускается от админа твой конкретный exe, обычно через правую кнопку в экплорере и там "Run as administrator".
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Август 21, 2014, 23:23 »

PS я лично искал как её выключить нормально минут 40 Улыбающийся Пришлось лезть с другого компа в инет и там найти таки способ Веселый
альт+ф4. второй фейспалм за день.
Записан

Изучением 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
Bepec
Гость
« Ответ #8 : Август 21, 2014, 23:33 »

Ничего подобного Улыбающийся Нулевая реакция в декстопном режиме Улыбающийся

PS это было на заре её появления Улыбающийся Ноутбук принесли.
Записан
vizir.vs
Гость
« Ответ #9 : Август 22, 2014, 11:35 »

похожая хрень и в Windows 7 есть (создание файла в Virtual Store).
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #10 : Август 24, 2014, 09:08 »

сам сталкивался с этой ботвой. Решается отключением защиты данных для диска в свойствах моего компа.
Записан
8Observer8
Гость
« Ответ #11 : Август 26, 2014, 13:20 »

makar182, может вам будет полезен в будущем мой пример. Такой подход позволяет контролировать ошибки однообразно и работать с функциями чтения\записи вот так:
Код
C++ (Qt)
int main( )
{
   // Read data from the input file
   QString fileNameIn = "input.txt";
   QString content;
 
   try {
       readData( fileNameIn, content );
   } catch ( const LogicError &e ) {
       std::cerr << e.what( ) << std::endl;
       return 1;
   } catch ( const FileError &e) {
       std::cerr << e.what( ) << std::endl;
       return 1;
   } catch ( ... ) {
       std::cerr << "Error: unknown exception" << std::endl;
       return 1;
   }
 
   // Parse the content to the integer array
   std::vector<int> arr;
   try {
       parseToIntArray( content, arr );
   } catch ( const LogicError &e ) {
       std::cerr << e.what( ) << std::endl;
       return 1;
   } catch ( ... ) {
       std::cerr << "Error: unknown exception" << std::endl;
       return 1;
   }
 
   // Write data to the output file
   QString fileNameOut = "output.txt";
   try {
       writeData( fileNameOut, arr );
   } catch ( const LogicError &e ) {
       std::cerr << e.what( ) << std::endl;
       return 1;
   } catch ( const FileError &e ) {
       std::cerr << e.what( ) << std::endl;
       return 1;
   } catch ( ... ) {
       std::cerr << "Error: unknown exception" << std::endl;
       return 1;
   }
 
   return 0;
}

Код самого примера: https://github.com/8Observer8/Qt_TextFile/blob/master/main.cpp
« Последнее редактирование: Август 26, 2014, 13:23 от 8Observer8 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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