Filhantering i C++?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Filhantering i C++?

Inlägg av jesse »

Ofta när man gör program för PC vill man kunna läsa flera filer (batch) och utföra samma sak med t.ex. alla filer med en viss filändelse i en viss mapp.... jag undrar om det finns bra funktioner att enkelt läsa alla filer ur angiven mapp.... kanske även hur man hittar undermappar osv... Lite filhantering med andra ord. Jag är inte ute efter några färdiga grafiska GUI eller så , utan bara funktioner som returnerar filnamn eller hur det nu kan tänkas fungera. Hur gör jag? Finns det nån bra tutorial på området med små exempelsnuttar?

De ska gärna fungera både i Windows och Linux-miljö.
Användarvisningsbild
nablaman
Inlägg: 480
Blev medlem: 30 juli 2010, 17:43:07
Ort: Lund
Kontakt:

Re: Filhantering i C++?

Inlägg av nablaman »

Funktionerna du behöver heter opendir / readdir / closedir.
Här finns ett exempel: http://en.wikipedia.org/wiki/Readdir
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Filhantering i C++?

Inlägg av jesse »

Tack för tipset. hmmm.. "C POSIX library". Googlade lite och det verkar som om det bara fungerar i UNIX/Linux? Eller har jag fel?

Sedan måste det väl finnas en uppsjö andra funktioner för att hitta i ett OS.
byta mapp t.ex om man vill använda relativa sökvägar. Finns det "självklara" eller grundläggande bibliotek i C++ som gör sådana grundläggande saker, eller finns det en mängd olika mer eller mindre bra bibliotek att välja bland så att alla programmerare har sina egna favoriter, eller hur är det uppbyggt? Som sagt, gärna något som funkar lika i Linux och Windows?
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Filhantering i C++?

Inlägg av jesse »

Men det kanske är allmänt att man inte brukar göra programvara som funkar i olika OS, utan man måste välja? Så verkar det ju vara i stor utsträckning när det gäller att göra grafiska interface (fast det finns flera som går att köra i båda systemen, som FLTK och GTK)?

I så fall gäller det att koncentrera sig på vilket OS man vill lära sig programmera i. Och tyvärr måste det nog bli Windows för min del, eftersom jag vill att de flesta ska kunna köra mina program , och de flesta har just Windows.

I windows verkar det finnas något som heter "FindFirstFile(...)", etc.. kanske är det jag får titta närmare på?

verkar vara detta jag är ute efter i så fall: MSDN Library - Local File Systems

* Listing the Files in a Directory
* Changing the Current Directory
* Moving Directories
* Using File Management ...
Användarvisningsbild
Carmis
Inlägg: 72
Blev medlem: 2 december 2008, 16:54:53
Ort: Växjö

Re: Filhantering i C++?

Inlägg av Carmis »

Om det är C++ du vill använda så kan du använda Nokias QT bibliotek så får du på köpet en väldigt lättanvänd grafisk miljö och massa annat som är körbart på de flesta plattformar.
Det finns filhantering i biblioteket också..

Varför inte välja Java om du vill kunna köra programmen på alla plattformar?
Användarvisningsbild
Kubbuth
Inlägg: 161
Blev medlem: 29 mars 2011, 11:10:16
Ort: Hässelby, Stockholm

Re: Filhantering i C++?

Inlägg av Kubbuth »

Jag påbörjade en gång i tiden en bok om ANSI-C i wikibooks, orkade väl inte göra det klart, men jag kom rätt långt.

http://sv.wikibooks.org/wiki/Programmering_i_ANSI-C

Allt som fungerar i ANSI-C fungerar också i C++ (men inte alltid tvärt om) så där kan du nog hitta en del nyttig information.

la till parentes
Senast redigerad av Kubbuth 31 mars 2011, 22:32:51, redigerad totalt 1 gång.
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Filhantering i C++?

Inlägg av SvenW »

Det finns lite här:
http://www.informit.com/guides/content. ... seqNum=245

Sedan kan man alltid använda
#include <stdlib.h>
int system(const char *command);

Men då är man beroende av ett skal, och det kan vara olika i olika opertarativsystem.
jbulow
Inlägg: 114
Blev medlem: 22 juni 2006, 21:35:26
Ort: Malmö

Re: Filhantering i C++?

Inlägg av jbulow »

Om du vill att samma kod skall fungera på fler platformar kan jag rekommendera Boosts filsystemsbibliotek: http://www.boost.org/doc/libs/1_46_1/li ... /index.htm

Här finns en snabbgenomgång hur du använder det: http://www.boost.org/doc/libs/1_46_1/li ... orial.html
Nerre
Inlägg: 27205
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Filhantering i C++?

Inlägg av Nerre »

Det känns lite som en miss i frågeställningen.

I de flesta moderna språk kan du i princip inte göra nånting som har med I/O att göra, allt sånt hanteras av funktionsbibliotek.

Många saker som man tycker "ingår" i språket är från funktionsbibliotek. (Nu räknas väl t.ex. stdio som att det "ingår" i C, men faktum är ju att det är kod som ligger utanför den man själv skrivet och det behövs en #include för att komma åt det.)
jbulow
Inlägg: 114
Blev medlem: 22 juni 2006, 21:35:26
Ort: Malmö

Re: Filhantering i C++?

Inlägg av jbulow »

Frågeställningen är tydlig och det finns flera relevanta svar.

När man pratar om språk så är under underförstått att det inbegriber dess standardbibliotek. Även specifikationerna för språk som C och C++ talar om "C programming language" och "C++ programming language" respektive, men omfattar även standardbiblioteken.
Nerre
Inlägg: 27205
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Filhantering i C++?

Inlägg av Nerre »

Men standardbiblioteken för I/O finns ju inte på all hårdvara... Bygger man en egen burk med en AVR och programmerar i C så måste man ju skriva alla I/O-funktioner själv.

Och som svaren på frågan visade: Det finns ingen grundfunktion i C för det som efterfrågade utan det beror på vad man använder för funktionsbibliotek.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Filhantering i C++?

Inlägg av jesse »

>Bygger man en egen burk med en AVR och programmerar i C så måste man ju skriva alla I/O-funktioner själv

njaeeeä.... Atmel har ju ett "standardbibliotek" för AVR som man i princip räknar med ska ingå. Där finns all I/O och t.ex. interrupt-hantering.

Men i C och C++ finns alltså i standardbiblioteken inte så värst mycket när det gäller filhantering? Det är väl <fstream.h> och det borde väl finnas till de flesta OS ? Fast är t.ex <fstream.h> OS-beroende eller är det samma källkod för alla?

Nåja... tack för alla svar... Som vanligt får jag väl vänta till helgen för att hinna testa något.

>Java...

Usch... När jag skulle börja lite med programmering för ett par år sedan valde jag Java för jag tyckte det verkade smart just p.ga plattformsoberoendet. Men jag upplever java som kasst, långsamt och onödigt krångligt (inte språket i sig, men de oändliga biblioteken med oändliga varianter på allt!). Så jag har lagt ner det. En av orsakerna är att java är sämre än alla andra språk på just hårdvarukompabilitet... man måste ha OS-beroende specialkod för nästan varje grej, och det är ändå ofta det inte fungerar...
Användarvisningsbild
Icecap
Inlägg: 26636
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Filhantering i C++?

Inlägg av Icecap »

Kolla findfirst() samt findnext()
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Filhantering i C++?

Inlägg av jesse »

jo, jag såg det tipset i början av tråden... men jag fick aldrig klart för mig om det funkar på Win-XP maskiner?


QT verkar ju vara ett kul bibliotek.... (jag följer noga tråden om grfiska gränssnitt i Linux) Laddade just ner QT4 Designer. Frågan är om qt4 Designer går att integrera i något IDE? Jag kör just nu med Code:Blocks när jag ska göra C++ program i Linux. (I windows använder jag något annat, vad det nu heter...).. Men QT4 Designer kanske är ett eget IDE?

Ska också kolla in ett program som heter "qtfm" som är "A lightweight file manager written in QT.". Kan ju ge något att studera koden kanske....
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Filhantering i C++?

Inlägg av sodjan »

> >Java...

Håller med dig, jesse.
Språket som sådan kanske är "bra" och väldigt "inne".
Plattformsoberoende låter nog "vackert" i teorin.
I praktiskt bruk (förrutom enanvändarmiljöer kanske) är det mest skit.
Ofta värre en "DLL-hell".
Skriv svar