Soubory - obecně – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Soubory - obecně – C / C++ – Fórum – Programujte.comSoubory - obecně – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Šťouchal0
Stálý člen
26. 3. 2012   #1
-
0
-

Zdravím,

chtěl bych se zeptat, jak fungují soubory v PC. Mám jakousi představu, ale chtěl bych vědět, zda je tomu opravdu tak.

  1. Soubory jsou reprezentovány n bajty, kde na konci je ukončovací znak pro soubor?
  2. U binárního souboru je jedno, jak si data reprezentuji, stačí když si na zvolenou reprezentaci dat napíšu program
  3. Při otevření soubory (např. fopen, popř. práce s ifstreamem a jejím open) se postaví ukazatel na začátek souboru
  4. Ukazatel v souboru - ten je umístěn v paměti a pracuje s ním jen OS, já k němu jen přistupuji pomocí načítání (takže v textových souborech po znacích / řádcích, v binárních po N bajtech?)
  5. Když přečtu bajt z binárního souboru (přes ifstream a get(char)) jeho hodnotu (jako číslo) vezmu přetypováním?

Nahlásit jako SPAM
IP: 213.168.191.–
Reklama
Reklama
vitamin+8
Grafoman
26. 3. 2012   #2
-
+1
-
Zajímavé

Sposob akym je subor ulozeny zavysi od file systemu a hw. Su tu systmove volania ktore umoznuju jednotny pristup k suborom napr pomocou file descriptorov(v linuxe). Standart c/c++ vytvara skupinu funkcii (stdio, iostream, ....) ktore  pracuju zo subormi a pridavaju bufferovanie. Dalej tu mas binarny a textovy mod pristupu k suborom. Binarny zapisuje/cita data presne tak ako zadavas, textovy moze niektore data pred zapisom/citanim upravovat. 

Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
yaqwsx+9
Posthunter
26. 3. 2012   #3
-
+1
-
Zajímavé

V C/C++ je soubor abstraktizován na proud dat (podobně jako standardní vstup - také se jedná o proud dat). Realizace je pak vždy jednak OS, tak i HW závislá.

Nahlásit jako SPAM
IP: 85.160.38.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Šťouchal0
Stálý člen
27. 3. 2012   #4
-
0
-

Děkuji vám.

A ještě k tomu ukazateli, kde jsem v souboru (když přečtu bajt, tak potom čtu následující bajt, nikoliv ten samý) - takže si filesystem implementuje takový ukazatel v paměti, kde ukazuje na bajt, co se bude číst?

Nahlásit jako SPAM
IP: 213.168.191.–
vitamin+8
Grafoman
27. 3. 2012   #5
-
0
-

Data sa ukladaju na disk vecsinou v blokoch. Tieto bloky nemusia nasledovat za sebou (tiez je to zalezitost FS). Dalej napr taky sw v ssd si tie data aj tak ulozi podla seba. "Pointer" na block asi bude existovat, ale na konkretny znak asi nie.

Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Šťouchal0
Stálý člen
27. 3. 2012   #6
-
0
-

Jasně, ale tak data se z disku natáhnout blíž CPU (tedy do RAM) a odtamtud se tahají dál? A jelikož si můžu načíst N bajtů, počkat a zase načítat N bajtů, tak musí být nějaký způsob, jak se to umístění (co se bude nově tahat) bude ukládat?

Nahlásit jako SPAM
IP: 213.168.191.–
vitamin+8
Grafoman
27. 3. 2012   #7
-
+1
-
Zajímavé

V prudoch (cout, cin, ...) mas buffer v ktorom mas viac znakov.

Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Šťouchal0
Stálý člen
27. 3. 2012   #8
-
0
-

Aha, takže se načte do bufferu celý blok z disku (blok = stránka = sektor?)?

Nahlásit jako SPAM
IP: 213.168.191.–
yaqwsx+9
Posthunter
27. 3. 2012   #9
-
0
-

#8 Šťouchal
To nejde říci obecně. Záleží na platformě. Do bufferu se načte tolik dat, kolik je pro OS momentálně výhodné (např. právě jeden blok - ale nemusí tomu být tak. Např. knihovna FATFS pro různé mikroprocesory dovoluje nastavit kolik dat se má bufferovat - standardně je však bufferování vypnuté (aby se neplýtvalo na MCU s RAM)).

Nahlásit jako SPAM
IP: 85.160.38.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Šťouchal0
Stálý člen
27. 3. 2012   #10
-
0
-

Aha. Takže celkově je práce se soubory i soubory samotné dost závislé na dané platformě.

Děkuji všem :)

Nahlásit jako SPAM
IP: 213.168.191.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý