Re: Reading one line at a time using NSFileHandle
Re: Reading one line at a time using NSFileHandle
- Subject: Re: Reading one line at a time using NSFileHandle
- From: Michael Ash <email@hidden>
- Date: Thu, 26 Mar 2009 11:47:13 -0400
On Wed, Mar 25, 2009 at 11:44 PM, Jeff Laing <email@hidden> wrote:
>>> Is there a way to read one line of a text file at a time
>>> using NSFileHandle (the way fgets does)?
>>
>> This code illustrates how you might approach
>> filtering lines of data obtained through an NSFileHandle.
>
> I've come across this problem as well - its fine to say "read it all
> into memory, then split it into lines seperated by my arbitrary
> delimiter", but that doesn't work in small-memory environments (like the
> iPhone) for big files which would otherwise be fine to parse line by
> line.
>
> Answers of the form "...but how do you know what the delimiter character
> is, Unicode, blah blah" aren't all that helpful. Lets assume that when
> someone says fgets() they *know* that they want to access an 8-bit
> ascii, newline-delimited text file line by line.
Note that "8-bit ascii" is an oxymoron. ASCII is a 7-bit encoding by
definition. However the good news is that nearly any encoding of
interest (UTF-16 being a notable exception) will preserve characters
like \n and \r and will not produce those bytes to indicate other
meanings. Treating the file as a raw bag of bytes and parsing for \r
or \n will work for virtually every situation.
> So far, the only answer I've ever seen is to fall back on
> fopen()/fgets()
Certainly that's a good way to go. It's also relatively easy to do
your own buffering using NSFileHandle or the like and essentially
implement your own line-reading scheme that way.
Mike
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden