文件流和 CRLF 分隔符?

Filestream and CRLF delimiter?

我有一个 Filestream,我正在阅读一个 文件。

分隔符是CRLF,我只想读到CRLF。

如何使用 Filestream 做到这一点? Filestream 是正确的选择吗?

我对 readallLines 或类似的方法不感兴趣,您必须将所有文件加载到内存中。

主要优先考虑的是内存效率。

您的评论极大地改变了问题;所以你有一个 open FileStream 并且你想在其中找到下一个 CRLF ('\r\n') ;在那种情况下,可以实施类似的东西:

   private static long GetNextCRLFPosition(FileStream stream) {
     try {
       long savedPosition = fs.Position;

       // ReadByte - we're working with binary file...
       for (int item = fs.ReadByte(); item >= 0; item = fs.ReadByte()) {
         if (item == '\r') {
           item = fs.ReadByte();

           if (item == '\n') 
             return fs.Position - 2;
           else 
             fs.Seek(-1, SeekOrigin.Current); 
         }
       }     

       return -1; 
     }
     finally {
       fs.Seek(savedPosition, SeekOrigin.Begin);
     }
   }

   ...  

   using (FileStream fs = new FileStream(@"C:\MyFile.Text", FileMode.Open)) {
     ...
     // The next "\r\n" is in shift bytes
     long shift = GetNextCRLFPosition(fs);     
     ...
   }