Tiedostojärjestelmän ohjelmointirajapinnan käyttö

Lisäosa org.eclipse.core.filesystem tuo käyttöön yleisen ohjelmointirajapinnan, jonka avulla voi käyttää eri tiedostojärjestelmiä. Tämä ohjelmointirajapinta on samankaltainen kuin java.io.File, mutta siinä on seuraavat keskeiset erot:

Tiedostojärjestelmän ohjelmointirajapinnassa minkä tahansa tiedoston polku kuvataan hierarkkisena java.net.URI-kohteena. URI-skeema kuvaa tiedostojärjestelmän lajia, ja URI-polkukomponentti kuvaa tiedoston sijaintia tiedostojärjestelmän rakenteessa. Siten jokainen hierarkkinen URI kuvaa mahdollista tiedostoa tai hakemistoa jossakin tiedostojärjestelmässä.

Tiedostojen ja tiedostojärjestelmien käsittelyn ohjelmointirajapinta on paketissa org.eclipse.core.filesystem. Keskeinen ohjelmointirajapinnan laji on IFileStore. Kukin IFileStore-ilmentymä kuvaa yhtä tiedostoa tiedostojärjestelmässä. Kuten IResource-kohteessa, IFileStore-ilmentymän olemassaolo ei tarkoita, että sellaista tiedostoa olisi levyssä. IFileStore-ilmentymän avulla voit luoda, poistaa, kopioida, siirtää tai avata tiedostojen tietovirtoja. Saat käyttöösi URI-osoitteen IFileStore-ilmentymän staattisen metodin EFS.getStore(URI) avulla.

IFileSystem-liittymän avulla voit selvittää tiedostojärjestelmää koskevia tietoja. Kukin IFileSystem-ilmentymä kuvaa yhtä URI-skeemaa, esimerkiksi "file:" tai "ftp:". Tämän lajin avulla voit kysellä esimerkiksi tuettuja tiedostomääritteitä tai sitä, ovatko isot kirjaimet merkitseviä tiedostojärjestelmässä. Tämän lajin avulla voit myös noutaa URI-osoitteen IFileStore-kohteen.

Useimmissa IFileStore-kohteen metodeissa on määriteparametri, jonka avulla voi lisätä asetuksia. Määritearvot ovat EFS-luokassa. Voit esimerkiksi avata tulostevirran tiedostoon liittämistä varten seuraavasti:

	IFileStore store = ...//jokin tiedostosäilö
	store.openOutputStream(EFS.APPEND, null);

Jos haluat käyttää metodin oletustoimintaa, valitse EFS.NONE.

IFileInfo-liittymä kuvaa tiedoston tilaa tietyllä hetkellä. Sen avulla voit selvittää esimerkiksi, onko tiedosto olemassa, onko se hakemisto tai mitkä sen määritteet ovat. Näitä tietoja voi muokata ja tallentaa ne sitten takaisin tiedostoon. Seuraavassa on esimerkki katkelmasta, joka määrittää hakemiston vain luettavaksi:

	IFileStore store = ...//jokin tiedostosäilö
   IFileInfo info = store.fetchInfo();
	if (info.exists() && info.isDirectory()) {
		info.setAttribute(EFS.ATTRIBUTE_READ_ONLY, true);
   store.putInfo(info, EFS.SET_ATTRIBUTES, null);
	}

Tällaisen ohjelmointirajapinnan avulla voit noutaa ja muuttaa tiedostojen tietoja yhdellä kutsulla tiedostojärjestelmään. Edellisessä esimerkissä tarvitaan tietojen noutoon vain yksi tiedostokutsu, minkä jälkeen voit toteuttaa IFileInfo-objektissa niin monta toimintoa kuin haluat, ilman että levyä tarvitsee enää kutsua.

EFS-luokassa on staattisia factory-metodeja, joiden avulla voi noutaa IFileStore- ja IFileSystem-ilmentymiä, sekä erilaisia vaihtoehtojen vakioita ja virhekoodeja.