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. Can not open file With QFile Class.
Forum Updated to NodeBB v4.3 + New Features

Can not open file With QFile Class.

Scheduled Pinned Locked Moved Unsolved General and Desktop
14 Posts 6 Posters 4.1k Views 1 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.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by mrjj
    #2

    Hi
    in c++ the

    \ has a special meaning. its called escaping
    so to have it in code you must use 2
    QFile("D:\\TestFoldler\\GauravData" );
    

    or use the Qt syntax using the other way. ( and just one)
    QFile("D:/TestFoldler/GauravData" );

    also
    "TestFoldler:GauravData:$DATA"
    is not a valid filename on windows.

    on linux its other way
    /nas/files/gauravFolder

    so make sure path is indeed correct.

    1 Reply Last reply
    2
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #3

      to add to @mrjj if you want to use those paths without duplicating or reversing the slashes you can use raw strings: QFile file(R"(\nas\files\gauravFolder:GauravData:$DATA)" );

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      1
      • G Gaurav Badgujar

        Hello,

        If we pass string like "D:\TestFoldler.docx:GauravData:$DATA" then we can write content in File.

        Example:-
        QFile file("D:\TestFoldler.docx:GauravData:$DATA" );
        file.open(QIODevice::WriteOnly);
        with this we can write content in file.

        but if we pass string like "\\nas\files\gauravFolder.docx:GauravData:$DATA" its not work.

        Example:-
        QFile file("\\nas\files\gauravFolder.docx:GauravData:$DATA" );
        file.open(QIODevice::WriteOnly);

        with this we can not write content in file. we can not open file.

        please Do needful.

        Regards,
        Gaurav Badgujar.

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @Gaurav-Badgujar You should not use : in paths/file names especially on Windows

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

        G 1 Reply Last reply
        2
        • jsulmJ jsulm

          @Gaurav-Badgujar You should not use : in paths/file names especially on Windows

          G Offline
          G Offline
          Gaurav Badgujar
          wrote on last edited by
          #5

          @jsulm
          but its working on "D:\TestFoldler:GauravData:$DATA"
          but this is not working with "\nas\files\gauravFolder:GauravData:$DATA" path.

          jsulmJ 1 Reply Last reply
          0
          • G Gaurav Badgujar

            @jsulm
            but its working on "D:\TestFoldler:GauravData:$DATA"
            but this is not working with "\nas\files\gauravFolder:GauravData:$DATA" path.

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by jsulm
            #6

            @Gaurav-Badgujar As others said you should either use \\ or /

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

            G 1 Reply Last reply
            1
            • jsulmJ jsulm

              @Gaurav-Badgujar As others said you should either use \\ or /

              G Offline
              G Offline
              Gaurav Badgujar
              wrote on last edited by
              #7

              @jsulm used "/" as per above mention comment but still not getting any resolution.

              mrjjM jsulmJ 2 Replies Last reply
              0
              • G Gaurav Badgujar

                @jsulm used "/" as per above mention comment but still not getting any resolution.

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #8

                @Gaurav-Badgujar
                Hi
                Try to use a full path and see it it works for you.
                "c:/nas/files/gauravFolder:GauravData:$DATA"
                else
                "./nas/files/gauravFolder:GauravData:$DATA"
                Its just path issue, i think.

                Also again, if on window, the ":" is FORBIDDEN

                1 Reply Last reply
                1
                • G Gaurav Badgujar

                  @jsulm used "/" as per above mention comment but still not getting any resolution.

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #9

                  @Gaurav-Badgujar What about \\? What exact error do you get (http://doc.qt.io/qt-5/qiodevice.html#errorString)?
                  And why do you use characters like : and $ ? You should avoid such characters in paths and file names. Especially :
                  : has a special meaning on Windows. Try to save a file in any Windows program using file name with : You will see it does not work.

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

                  1 Reply Last reply
                  1
                  • VRoninV Offline
                    VRoninV Offline
                    VRonin
                    wrote on last edited by
                    #10

                    Another option, given the name of the first folder is nas i can guess it's a network path, they normally start with 2 slashes, not just 1

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    G 1 Reply Last reply
                    0
                    • m.sueM Offline
                      m.sueM Offline
                      m.sue
                      wrote on last edited by m.sue
                      #11

                      Hi,
                      the file names with ":" hide data using ADS (alternate data streams). Strings like ":$DATA" have a special meaning. Normal Explorer and DIR command etc. do not see these files.

                      So I doubt Qt can open them for reading/writing; native CreateFile should be able to do so.

                      On the other hand: make sure that the file "c:/nas/files/gauravFolder" already exist when you create the data stream file! Here is some code: https://support.microsoft.com/en-us/kb/105763
                      -Michael.

                      1 Reply Last reply
                      1
                      • BuckwheatB Offline
                        BuckwheatB Offline
                        Buckwheat
                        wrote on last edited by
                        #12

                        @Gaurav-Badgujar ...

                        There are several things wrong with the path but the :$DATA is the biggest hurdle. It is just not allowed on any M$ operating system. Fixing non-existant paths will be easy but if your file name has special meaning then that could be a problem. Now, if the :$DATA represents some bit of data to write into the file name than ok.

                        The article "Illegal Characters on Various Operating Systems" explains what is legal on most OSes.
                        https://kb.acronis.com/content/39790

                        Dave Fileccia

                        1 Reply Last reply
                        0
                        • VRoninV VRonin

                          Another option, given the name of the first folder is nas i can guess it's a network path, they normally start with 2 slashes, not just 1

                          G Offline
                          G Offline
                          Gaurav Badgujar
                          wrote on last edited by
                          #13

                          @VRonin yes its network path..typo mistake. and it contains two slashes.

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            Gaurav Badgujar
                            wrote on last edited by
                            #14

                            :$DATA its not a path we append this string with path.

                            1 Reply Last reply
                            0

                            • Login

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