Using String.Split will work fine as long as your line isn't that
long. If you've got a huge textfile with a single line, but dozens or
hundreds of megabytes worth of data, using that method will get you in
trouble.
I'd go with something like the following - clean it up and modify it
as appropriate for your needs, including necessary error handling,
etc...
private static string ReadToDelimiter(StreamReader streamReader, char
delimiter)
{
StringBuilder result = null;
char c = (char)streamReader.Read();
while ((!streamReader.EndOfStream) && (c != delimiter))
{
if (result == null)
{
result = new StringBuilder();
}
result.Append(c);
c = (char)streamReader.Read();
}
return (result != null) ? result.ToString() : null;
}
To call your code, you can do something like:
StreamReader reader = new StreamReader(@"C:\myfile.txt");
string textLine = ReadToDelimiter(reader, '@');
while (textLine != null)
{
Console.WriteLine(textLine);
textLine = ReadToDelimiter(reader, '@');
}
On Dec 9, 8:24 am, "Kaarthik Padmanabhan" <[EMAIL PROTECTED]>
wrote:
> aah..forgot to replace the path param passed in:
> Initialize the StreamReader as follows:
> sr = New System.IO.StreamReader(path) instead of the hard-coded dummy path
> used.
>
> On Tue, Dec 9, 2008 at 8:51 PM, Kaarthik Padmanabhan
> <[EMAIL PROTECTED]>wrote:
>
>
>
> > Hi,
> > See if this helps:
>
> > Private Function GetDelimitedString(ByVal path As String) As List(Of
> > String)
> > Dim sr As System.IO.StreamReader
> > Dim contentStr As String = String.Empty
> > Dim delimitedStringList As New List(Of String)
>
> > sr = New System.IO.StreamReader("C:\DelimitedTextFile.txt")
> > sr.ReadLine()
> > contentStr = sr.ReadToEnd()
>
> > If Not String.IsNullOrEmpty(contentStr) Then
> > For Each delimitedStr As String In contentStr.Split("@")
> > delimitedStringList.Add(delimitedStr)
> > Next
> > End If
>
> > Return delimitedStringList
> > End Function
>
> > Regards,
> > Kaarthik
>
> > On Tue, Dec 9, 2008 at 3:27 PM, Clyde <[EMAIL PROTECTED]> wrote:
>
> >> Hello,
> >> I have a txt file whose lines are separated by a delimiter "@".
> >> How can I read the file line by line using "streamreader"?
> >> Plz reply asap.
> >> Thanx,
> >> Clyde
>
> > --
> > Kaarthik,
> >http://coding-passion.blogspot.com
>
> --
> Kaarthik,http://coding-passion.blogspot.com