2017-02-16 11 views
1

В C# можно ли читать только определенное количество байтов данных из файла каждый раз, когда выполняется чтение? было бы сделать то же самое, что и питона строки кода нижеМожно ли каждый раз читать определенное количество файлов?

data=file.read(1024) 

Где 1024 это количество байтов, читает.

данные вернут строку, содержащую 1024 байта текста из файла.

Есть ли что-то для C#, способного выполнить одно и то же?

+0

Вы можете попробовать поместить функцию чтения внутри цикла, поэтому каждую секунду или минуту вы будете читать файл –

+1

См. [FileStream.Read()] (https://msdn.microsoft.com/en-us/library/ system.io.filestream.read (v = vs.110) .aspx) –

+0

@CodeCaster Прошу прощения за ранее дерзкий ответ. «1024 байта текста» был всего лишь примером, и я в первую очередь использую его при отправке данных по сокетам, поэтому можно отправлять только определенные биты файла (вместо 100 МБ данных или что-то нелепое). Я вижу, откуда вы пришли, как бы мы это исправим? – Tom

ответ

3

Читаешь файл в 1024 байт куски, как это:

string fileName = @"Path to the File"; 
int bufferCapacity = 1024; 
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) 
{ 
    var buffer = new byte[bufferCapacity ]; // will contain the first 1024 bytes 
    fs.Read(buffer, 0, bufferCapacity); 
} 

Наконец buffer будет содержать необходимые байты, чтобы преобразовать их в строку, вы можете использовать следующую строку кода:

var stringData = System.Text.Encoding.UTF8.GetString(buffer); 

Дополнительное примечание для вас, если вам нужно, чтобы получить первые п строки из файла означает, что вы можете использовать следующую строку:

List<string> firstNLines = File.ReadLines(fileName).Take(n).ToList(); 
+0

Работает очарование, спасибо помощнику. – Tom

+0

Рад это услышать, рад помочь вам –