Lesson 2
Reading and writing files
Questo argomento si apre parlando della classe Stream e delle classi derivate:
- FileStream
- MemoryStream
- CryptoStream
- NetworkStream
- GZipStream
Ci sono altre classi correlate come File e Directory (entrambe statiche), FileAccess (enum con Read, Write and ReadWrite), FileMode (enum con Append, Create, CreateNew, Open, OpenOrCreate, Truncate - CreateNew rilancia eccezione se il file esiste, Open rilancia eccezione se il file non esiste, Truncate svuota il file).
Per leggere da un file:
FileStream theFile = File.Open(@"C:\boot.ini", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(theFile); //anche File.OpenText(@"C:\boot.ini");
Console.Write(sr.ReadToEnd()); //anche un WriteLine(File.ReadAllText(@"C:\boot.ini");
sr.Close();
theFile.Close();
Per scrivere un file:
FileStream theFile = File.Create(@"C:\file.ini");
StreamWriter writer = new StreamWriter(theFile); //anche File.CreateText(@"C:\file.ini");
writer.WriteLine("Hello"); //anche un File.WriteAllText(@"C:\boot.ini", "Hello");
writer.Close();
theFile.Close();
Per scrivere e leggere le classi derivano dalle astratte TextReader e TextWriter: StreamWriter e StreamReader o StringReader e StringWriter o BinaryReader e BinaryWriter.
Concetti simili per scritture in memorie con MemoryStream.
Per migliorare le performance è utile la classe BufferedStream che si interpone tra gli stream esistenti:
FileStream newFile = File.Create(@"C:\test.txt");
BufferedStream buffered = new BufferedStream(newFile);
StreamWriter writer = new StreamWriter(buffered);
writer.WriteLine("Some data");
writer.Close();
Technorati tags: [70-536]