Avatar billede kbhadsten Nybegynder
08. juni 2007 - 08:58 Der er 6 kommentarer og
1 løsning

Hvordan tjekker man om en fil er åben

Hej Eksperten

En kammerat spurgte mig hvordan man kunne tjekke om en fil var åben eller ej, og det ville jeg da lige vise ham i C++. Men det var åbenbart for stor en opgave, for en praktisk test af min kode viste at det ikke virkede som jeg troede.

  ifstream is;
  filebuf * fb;

  fb = is.rdbuf();
  fb->open("test.log",ios::in);
 
  if ( fb->is_open() )
    cout << "file is open.\n";
  else
    cout << "file is not open.\n";

  fb->close();

Jeg troede at is_open ville returnere FALSE hvis en fil allerede var åben, men det gør den altså ikke. Måske bruger jeg metoden helt forkert. Så er der nogen der lige kan forklare mig hvordan hele det her "Filen er i brug (åben)" halløj fungere.
Avatar billede bertelbrander Novice
08. juni 2007 - 20:59 #1
Is open, bør virke:

#include <iostream>
#include <fstream>
int main()
{
  std::ifstream In("whatever.txt");
  if(In.is_open())
  {
      In.close();
      std::cout << "File was opened" << std::endl;
      if(In.is_open())
        std::cout << "The file is still open" << std::endl;
      else
          std::cout << "The file is now closed" << std::endl;
  }
  else
      std::cout << "Did not open the file" << std::endl;
}

Programmet her bør skrive:
File was opened
The file is now closed
Hvis whatever.txt findes
Avatar billede kbhadsten Nybegynder
08. juni 2007 - 21:41 #2
Ja, men hva'så hvis jeg har filen åbnet i et andet program. f.eks. notepad samtidig. Bør den så stadig beklage sig over filen er åben og derfor ikke kan åbnes?
Avatar billede erikjacobsen Ekspert
08. juni 2007 - 21:45 #3
Notepad holder ikke filen åben, mens den bruger den. Derfor kan du ikke se at den er åben andetsteds.
Avatar billede bertelbrander Novice
08. juni 2007 - 22:03 #4
Hvis et andet program har filen åben på samme tid som du forsøger at åbne den vil du ikke kunne åbne filen.
Men som Erik skriver holder de færreste programmer filen på disken åben mens der arbejdes på den, programmerne arbejder med filen i hukommelsen.
Avatar billede kbhadsten Nybegynder
15. juni 2007 - 09:22 #5
ok, smid et svar så vi kan lukke tråden
Avatar billede erikjacobsen Ekspert
15. juni 2007 - 09:29 #6
Ingen point til mig, tak. Men prøv evt på en fil til Excel - den skulle holde filen åben mens der arbejdes på den.
Avatar billede kbhadsten Nybegynder
15. juni 2007 - 10:18 #7
*Tråden lukkes*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester