*Tämä artikkeli käsittelee tiedostojen tallennusta. Hakemisto voi viitata myös kirjassa olevaan hakemistoon, tai tietojenkäsittelytieteessä hakurakenteeseen.*
Hakemistoja ja niiden alla olevia tiedostoja.
**Hakemisto**, myös nimillä **kansio** tai **laatikosto** (engl. *drawer*), on tiedostojen järjestämiseen käytetty rakenne tiedostojärjestelmässä. Teknisestä näkökulmasta hakemisto on erityinen tiedosto, jossa on luettelo siihen liitetyistä tiedostoista.

Hakemistot ovat niin sanotun toisen sukupolven tiedostojärjestelmän (hierarkkinen tiedostojärjestelmä) ominaisuus ja keskeisessä roolissa. Hierarkkiset tiedostojärjestelmät ovat olennaisia moderneissa käyttöjärjestelmissä.
Kun Unixissa oli hierarkkinen tiedostojärjestelmä se ei vielä ollut itsestäänselvyys kaikkialla: esimerkiksi CP/M:ssä tiedostojärjestelmässä ei ollut alihakemistoja ja joissakin muissa järjestelmissä syvyys oli rajattu vain muutamaan tasoon kun taas Unix salli minkä vain syvyyden.

Käyttäjälle hakemisto ilmenee *astiana* tai *säiliönä*, joka voi sisältää tiedostoja ja muita hakemistoja. Kansio on Macintoshissa ja Windowsissa käytetty synonyymi hakemistolle.

Hakemistopolkuja käytetään tunnistamaan kappale tiedostojärjestelmässä. Polut sisältävät erotinmerkkejä sekä komponentteja, jotka ovat muita kuin erotinmerkkejä. Hakemistopolut voivat olla "absoluuttisia" (alkaen juurihakemistosta) tai "suhteellisia", jotka alkavat sen hetkisestä hakemistosta.
Hakemisto voi sisältää tiedostojen lisäksi muita hakemistoja eli alihakemistoja. Sisäkkäisistä hakemistoista muodostuu tiedostojärjestelmän hakemistorakenne eli hakemistopuu. Unix-tyyppiset käyttöjärjestelmät, AmigaOS ja useat muut käyttävät hakemistotasojen erottimena vinoviivaa (`/`). CP/M, MS-DOS ja Windows käyttävät kenoviivaa (`\`). Vastaavasti URL-osoitteissa verkkotunnuksen jälkeiset vinoviivat tyypillisesti jäsentävät WWW-palvelimen hakemistopolkua. OpenVMS käyttää hakemistoerottimena pistettä (`.`) ja vanha Mac OS (ennen OS X:ää) kaksoispistettä (`:`).

Hakemistopolun ja tiedostonimien yhteispituus voi rajoittaa maksimipituutta ja se voi riippua käytetystä merkistöstä. 
Mac OS X, Solaris ja AIX käyttöjärjestelmissä suurin sallittu yhteispituus on 1024 merkkiä. Linuxissa tiedoston nimelle on 255 merkin maksimi ja yhteispituus voi olla 4096 tavua.
Windowsin ohjelmointirajapinnassa suurin sallittu tiedoston polun pituus on 260 merkkiä ("D:\<korkeintaan 256 merkkiä><NUL>"), josta enintään 255 on tiedostonimelle. Unicoden kanssa merkkien maksimimäärä voi vaihdella kun yksi merkki voi käyttää useampia tavuja.
OpenVMS:ssä ODS-5 tiedostojärjestelmällä nimen pituus voi olla 236 8-bittistä tai 118 16-bittistä merkkiä.

Vanhanaikaisissa tai yksinkertaisissa tietokonejärjestelmissä (sulautetut järjestelmät) ei välttämättä ole hakemistoja lainkaan, vaan kaikki tiedostot tallentuvat suoraan juurihakemistoon (ensimmäisen sukupolven tiedostojärjestelmät).

Hakemistojen esitystavat
------------------------

Graafisissa käyttö­liittymissä hakemistoa tyypillisesti edustaa kansio-kuvake.
Useissa graafisissa käyttöliittymissä hakemisto voidaan esittää kansion (*folder*) näköisellä kuvakkeella. Tämän tarkoitus on havainnollistaa ajatusta, että tiedostoja voidaan säilyttää ikään kuin kansion sisällä.
Graafisten käyttöliittymien esitystavat vaihtelevat ja niissä on toisinaan erinäköisiä kansioita, kun taas tiedostojärjestelmän kannalta tällaista eroa ei ole.

Muun muassa AmigaOS käytti laatikostoja (*drawer*) hakemistosymboleina. Muitakin esitystapoja on käytetty.

Lähteet
-------

1. ↑  Using The Amiga Workbench *computinghistory.org.uk*. Viitattu 14.4.2022. (englanniksi)
2. ↑  K. Thompson: UNIX Implementation (PDF) *users.soe.ucsc.edu*. Viitattu 8.9.2019. (englanniksi)
3. 1 2  Jim Salter: Bitrot and atomic COWs: Inside "next-gen" filesystems  15.1.2014. Ars Technica. Viitattu 13.11.2019. (englanniksi)
4. 1 2 3 4  Directory Definition *linfo.org*. Viitattu 23.9.2021. (englanniksi)
5. ↑  Neil Brown: Ghosts of Unix Past: a historical search for design patterns *lwn.net*.  27.10.2010. Viitattu 23.10.2020. (englanniksi)
6. ↑  Pathname lookup *kernel.org*. Viitattu 23.9.2021. (englanniksi)
7. 1 2 3 4  File specification syntax *ibm.com*. Viitattu 23.9.2021. (englanniksi)
8. ↑
9. ↑  OpenVMS Guide to Extended File Specifications (PDF) *vmssoftware.com*. Viitattu 14.4.2022. (englanniksi)
10. ↑  The Amiga Workbench *theamigamuseum.com*. Viitattu 6.1.2022. (englanniksi)