在.txt中逐行读取所有字节

时间:2014-12-01 21:52:00

标签: c# file-io

我只需读取一行中的所有字节并将它们放入一个数组中,然后移到下一行,依此类推。

例如:

.txt文件

word
apple
zzz

现在在我的程序中,我必须在第一行读取一堆字节,而我的数组将由4个元素组成。我正在进行处理并转到下一行,依此类推。

我看过很多地方,但没有运气。理想情况下,我需要类似ReadAllBytes()之类的东西,除了读取整个文件,我需要它只读一行。

编辑:因为我想要速度,我不能做ReadAllLines()或任何,这需要我先读取一个字符串,然后将其转换成一个字节数组。

EDIT2:我现在必须回溯一下,因为我知道我不是最好解释任何东西,但我试试。理想情况下,这就是我希望代码工作的方式

loop through all lines of txt file
    loop through all bytes on that line
        read the byte and process it
        if I need to, I break the loop and move on to the next line

这只是为了更好地理解我的困境。

即使问题仍未解决,我仍然要感谢所有真正试图帮助我的人:谢谢你的尝试

2 个答案:

答案 0 :(得分:4)

假设您的文本文件是ASCII:

var lines = File.ReadLines(@"c:\temp\foo.txt");
foreach (var line in lines)
{
    byte[] bytes = Encoding.ASCII.GetBytes(line);
    // do some processing with byte array
}

根据评论更新ReadLines()

答案 1 :(得分:-1)

您可以使用 StreamReader.ReadLine 从特定文件中读取一行,然后将字符串转换为字节数组,最后完成工作。

using (var reader = File.OpenText(path))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                foreach (var item in Encoding.UTF8.GetBytes(line))
                {
                    //do your work here 
                    //break the foreach loop if the condition is not satisfied
                }
            }
        }