Asemien tiedot

Asemien tietojen hakemiseen on luokka DriveInfo.

Haetaan asemat ja tulostetaan vapaana olevan tilan prosenttiosuus

foreach (DriveInfo drive in DriveInfo.GetDrives())
{
	// asema on valmiina (esim. levykeasema ei saata olla)
	if (drive.IsReady)
	{
		// lasketaan tyhjän tilan osuus
		double free = (double)drive.AvailableFreeSpace / (double)drive.TotalSize * 100;
		Console.WriteLine("{0}\t{1:0.00}% vapaana", drive.Name, free);
	}
}

DriveInfo sisältää seuraavat ominaisuudet

Nimi Sisältö
AvailableFreeSpace Käytettävissä oleva tila
DriveFormat Formaatti (esim. NTFS tai FAT32)
DriveType Tyyppi (kiintolevy, CD-ROM, verkkolevy jne.)
IsReady Onko valmiina (levyke sisällä tms.)
Name Aseman tunnus (esim C:\)
RootDirectory Juurihakemisto (esim C:\)
TotalFreeSpace Vapaana oleva tila yhteensä
TotalSize Aseman koko
VolumeLabel Aseman nimi

Hakemistojen ja tiedostojen tiedot

Directory-luokka sisältää staattisia metodeja hakemistojen käsittelyyn ja DirectoryInfo-luokka tarjoaa yhden hakemiston tiedot. Nämä menevät osittain päällekkäin. Molemmissa on esim. metodi GetFiles, joka palauttaa hakemistossa olevat tiedostot (erona se, että Directoryn metodi palauttaa string[]- ja DirectoryInfon metodi FileInfo[]-tyyppisen tuloksen).

Listataan hakemistossa olevat mp3-tiedostot kummallakin tavalla

string hakemisto = @"D:\Musiikki";

// käyttäen Directory-luokan staattista metodia
foreach(string file in Directory.GetFiles(hakemisto,"*.mp3",SearchOption.AllDirectories))
{
	FileInfo mp3 = new FileInfo(file);
	Console.WriteLine(file.Name);
}

// käyttäen DirectoryInfon metodia
DirectoryInfo dir = new DirectoryInfo(hakemisto);
foreach (FileInfo mp3 in dir.GetFiles("*.mp3", SearchOption.AllDirectories))
{
	Console.WriteLine(mp3.Name);
}

Hakemistojen käsittelyyn Directory- ja DirectoryInfo-luokista löytyvät metodit ja ominaisuudet

Tehtävä/tieto Directory DirectoryInfo
Nimi Name FullName
Onko hakemisto olemassa Exists() Exists
Luo hakemisto CreateDirectory() Create() CreateSubdirectory()
Listaa alihakemistot EnumerateDirectories() GetDirectories() EnumerateDirectories() GetDirectories()
Listaa tiedostot EnumerateFiles() GetFiles() EnumerateFiles() GetFiles()
Ylähakemisto GetParent() Parent
Siirrä hakemisto Move() MoveTo()
Poista hakemisto Delete() Delete()
Hakemiston attribuutit Attributes
Luontiaika GetCreationTime() SetCreationTime() GetCreationTimeUtc() SetCreationTimeUtc() CreationTime CreationTimeUtc
Muokkausaika GetLastWriteTime() SetLastWriteTime() GetLastWriteTimeUtc() SetLastWriteTimeUtc() LastWriteTime LastWriteTimeUtc
Milloin viimeksi käytetty GetLastAccessTime() SetLastAccessTime() GetLastAccessTimeUtc() SetLastAccessTimeUtc() LastAccessTime LastAccessTimeUtc
Tiedostojen käsittelyyn File- ja FileInfo-luokista löytyvät metodit ja ominaisuudet
Tehtävä/tieto File FileInfo
Nimi Name FullName
Koko Length
Onko tiedosto olemassa Exists() Exists
Luo tiedosto Create() Create()
Kopioi tiedosto Copy() CopyTo()
Hakemisto Directory DirectoryName
Siirrä tiedosto Move() MoveTo()
Poista tiedosto Delete() Delete()
Korvaa tiedosto Replace() Replace()
Attribuutit GetAttributes() Attributes
Luontiaika GetCreationTime() SetCreationTime() GetCreationTimeUtc() SetCreationTimeUtc() CreationTime CreationTimeUtc
Muokkausaika GetLastWriteTime() SetLastWriteTime() GetLastWriteTimeUtc() SetLastWriteTimeUtc() LastWriteTime LastWriteTimeUtc
Milloin viimeksi käytetty GetLastAccessTime() SetLastAccessTime() GetLastAccessTimeUtc() SetLastAccessTimeUtc() LastAccessTime LastAccessTimeUtc

Tiedoston lukeminen ja kirjoittaminen

File-luokasta löytyy staattisia metodeita, joilla voi lukea ja kirjoittaa tiedostosta/tiedostoon.

Esim. luetaan tiedostosta kaikki rivit, muunnetaan kirjaimet isoiksi ja tallennetaan

string tiedosto = @"C:\tiedosto.txt";
// luetaan kaikki rivit
string[] rivit = File.ReadAllLines(tiedosto);
// muunnetaan isoiksi kirjaimiksi
for (int i = 0; i < rivit.Length; i++)
{
	rivit[i] = rivit[i].ToUpper();
}
// kirjoitetaan kaikki rivit
File.WriteAllLines(tiedosto, rivit);

Metodit tiedostoon kirjoittamiseen

Nimi Tehtävä
AppendAllLines() Lisää rivit tiedostoon olemassa olevan sisällön jatkoksi
AppendAllText() Lisää tekstin tiedostoon olemassa olevan sisällön jatkoksi
WriteAllBytes() Kirjoittaa tavut tiedostoon (korvaa vanhan sisällön)
WriteAllLines() Kirjoittaa rivit tiedostoon (korvaa vanhan sisällön)
WriteAllText() Kirjoittaa tekstin tiedostoon (korvaa vanhan sisällön)
Metodit tiedoston lukemiseen
Nimi Tehtävä
ReadAllBytes() Lukee kaikki tavut
ReadAllLines() Lukee kaikki rivit
ReadAllText() Lukee koko tekstin
ReadLines() Lukee rivit
Kirjoittamiseen ja lukemiseen voi käyttää myös tietovirtoja (stream).