Ricevo flussi di I/O di sistema da una sorgente. Procedere con l'oggetto flusso solo se contiene la stringa "MSTND"
.Ricerca pattern in un System.IO.Stream
Mi rendo conto che non c'è molto che posso fare sullo streaming a meno che non lo converti in stringa. La conversione stringa è solo per la corrispondenza sottostringa. Ma non voglio fare nulla che richieda molto tempo o spazio. Quanto tempo e molto spazio è una conversione da Stream a stringa solo per la corrispondenza sottostringa?
Il codice che ho scritto è:
private bool StreamHasString (Stream vStream)
{
bool containsStr = false;
byte[] streamBytes = new byte[vStream.Length];
vStream.Read(streamBytes, 0, (int) vStream.Length);
string stringOfStream = Encoding.UTF32.GetString(streamBytes);
if (stringOfStream.Contains("MSTND"))
{
containsStr = true;
}
return containsStr ;
}