.NET Framework
System.IO
Поиск…
Чтение текстового файла с помощью StreamReader
string fullOrRelativePath = "testfile.txt";
string fileData;
using (var reader = new StreamReader(fullOrRelativePath))
{
fileData = reader.ReadToEnd();
}
Обратите внимание, что эта StreamReader
конструктора StreamReader
делает некоторое обнаружение автоматического кодирования , которое может или не может соответствовать фактической кодировке, используемой в файле.
Обратите внимание, что есть некоторые удобные методы, которые читают весь текст из файла, доступного в классе System.IO.File
, а именно File.ReadAllText(path)
и File.ReadAllLines(path)
.
Чтение / запись данных с использованием System.IO.File
Сначала давайте посмотрим три разных способа извлечения данных из файла.
string fileText = File.ReadAllText(file);
string[] fileLines = File.ReadAllLines(file);
byte[] fileBytes = File.ReadAllBytes(file);
- В первой строке мы считываем все данные в файле в виде строки.
- Во второй строке мы считываем данные в файле в массив строк. Каждая строка в файле становится элементом в массиве.
- На третьем мы читаем байты из файла.
Затем давайте посмотрим три разных метода добавления данных в файл. Если указанный вами файл не существует, каждый метод автоматически создаст файл, прежде чем пытаться добавить к нему данные.
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.");
}
- В первой строке мы просто добавляем строку в конец указанного файла.
- Во второй строке мы добавляем каждый элемент массива в новую строку в файле.
- Наконец, в третьей строке мы используем
File.AppendText
чтобы открыть потоковый блок, который добавит все данные, которые будут записаны на него.
И, наконец, давайте посмотрим три разных способа записи данных в файл. Разница между добавлением и записью заключается в том, что запись поверх записи данных в файл при добавлении добавляет данные в файл. Если указанный вами файл не существует, каждый метод автоматически создаст файл, прежде чем пытаться записать данные на него.
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 });
- Первая строка записывает строку в файл.
- Вторая строка записывает каждую строку в массив в своей собственной строке в файле.
- Третья строка позволяет вам написать массив байтов в файл.
Последовательные порты, использующие System.IO.SerialPorts
Итерация по подключенным последовательным портам
using System.IO.Ports;
string[] ports = SerialPort.GetPortNames();
for (int i = 0; i < ports.Length; i++)
{
Console.WriteLine(ports[i]);
}
Создание объекта System.IO.SerialPort
using System.IO.Ports;
SerialPort port = new SerialPort();
SerialPort port = new SerialPort("COM 1"); ;
SerialPort port = new SerialPort("COM 1", 9600);
ПРИМЕЧАНИЕ . Это всего лишь три из семи перегрузок конструктора для типа SerialPort.
Чтение / запись данных через SerialPort
Самый простой способ - использовать методы SerialPort.Read
и SerialPort.Write
. Однако вы также можете получить объект System.IO.Stream
который можно использовать для потоковой передачи данных через SerialPort. Для этого используйте SerialPort.BaseStream
.
чтение
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);
Вы также можете прочитать все доступные данные:
string curData = port.ReadExisting();
Или просто прочитайте первую новую строку, встречающуюся во входящих данных:
string line = port.ReadLine();
Пишу
Самый простой способ записи данных через SerialPort:
port.Write("here is some text to be sent over the serial port.");
Однако вы также можете отправлять данные по мере необходимости:
//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);