.NET Framework
System.IO
Ricerca…
Leggere un file di testo usando StreamReader
string fullOrRelativePath = "testfile.txt";
string fileData;
using (var reader = new StreamReader(fullOrRelativePath))
{
fileData = reader.ReadToEnd();
}
Si noti che questo sovraccarico del costruttore StreamReader
esegue alcuni rilevamenti di codifica automatica, che possono o meno essere conformi alla codifica effettiva utilizzata nel file.
Si noti che esistono alcuni metodi di comodità che leggono tutto il testo dai file disponibili nella classe System.IO.File
, ovvero File.ReadAllText(path)
e File.ReadAllLines(path)
.
Lettura / Scrittura di dati mediante System.IO.File
Innanzitutto, vediamo tre diversi modi di estrarre i dati da un file.
string fileText = File.ReadAllText(file);
string[] fileLines = File.ReadAllLines(file);
byte[] fileBytes = File.ReadAllBytes(file);
- Sulla prima riga, leggiamo tutti i dati nel file come una stringa.
- Sulla seconda riga, leggiamo i dati nel file in un array di stringhe. Ogni riga nel file diventa un elemento nell'array.
- Sul terzo leggiamo i byte dal file.
Successivamente, vediamo tre diversi metodi per aggiungere dati a un file. Se il file specificato non esiste, ciascun metodo creerà automaticamente il file prima di tentare di aggiungervi i dati.
File.AppendAllText(file, "Here is some data that is\nappended to the file.");
File.AppendAllLines(file, new string[2] { "Here is some data that is", "appended to the file." });
using (StreamWriter stream = File.AppendText(file))
{
stream.WriteLine("Here is some data that is");
stream.Write("appended to the file.");
}
- Sulla prima riga aggiungiamo semplicemente una stringa alla fine del file specificato.
- Sulla seconda riga aggiungiamo ogni elemento della matrice su una nuova riga nel file.
- Finalmente sulla terza riga usiamo
File.AppendText
per aprire uno streamwriter che aggiungerà qualsiasi dato vi sia scritto.
E infine, vediamo tre diversi metodi di scrittura dei dati in un file. La differenza tra l' aggiunta e la scrittura è che la scrittura sovrascrive i dati nel file mentre l'aggiunta aggiunge ai dati nel file. Se il file specificato non esiste, ciascun metodo creerà automaticamente il file prima di tentare di scrivere i dati su di esso.
File.WriteAllText(file, "here is some data\nin this file.");
File.WriteAllLines(file, new string[2] { "here is some data", "in this file" });
File.WriteAllBytes(file, new byte[2] { 0, 255 });
- La prima riga scrive una stringa nel file.
- La seconda riga scrive ogni stringa nell'array sulla propria riga nel file.
- E la terza riga consente di scrivere un array di byte nel file.
Porte seriali che utilizzano System.IO.SerialPorts
Iterazione su porte seriali connesse
using System.IO.Ports;
string[] ports = SerialPort.GetPortNames();
for (int i = 0; i < ports.Length; i++)
{
Console.WriteLine(ports[i]);
}
Istanziazione di un oggetto System.IO.SerialPort
using System.IO.Ports;
SerialPort port = new SerialPort();
SerialPort port = new SerialPort("COM 1"); ;
SerialPort port = new SerialPort("COM 1", 9600);
NOTA : Questi sono solo tre dei sette overload del costruttore per il tipo SerialPort.
Lettura / Scrittura di dati su SerialPort
Il modo più semplice è utilizzare i metodi SerialPort.Read
e SerialPort.Write
. Tuttavia, è anche possibile recuperare un oggetto System.IO.Stream
che è possibile utilizzare per lo streaming di dati su SerialPort. Per fare ciò, utilizzare SerialPort.BaseStream
.
Lettura
int length = port.BytesToRead;
//Note that you can swap out a byte-array for a char-array if you prefer.
byte[] buffer = new byte[length];
port.Read(buffer, 0, length);
Puoi anche leggere tutti i dati disponibili:
string curData = port.ReadExisting();
O semplicemente leggere la prima nuova riga incontrata nei dati in arrivo:
string line = port.ReadLine();
scrittura
Il modo più semplice per scrivere dati su SerialPort è:
port.Write("here is some text to be sent over the serial port.");
Tuttavia puoi anche inviare i dati in questo modo quando necessario:
//Note that you can swap out the byte-array with a char-array if you so choose.
byte[] data = new byte[1] { 255 };
port.Write(data, 0, data.Length);