Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > File 'rb' on non-Windows

Reply
Thread Tools

File 'rb' on non-Windows

 
 
Jari Williamsson
Guest
Posts: n/a
 
      11-09-2007
To open binary files, on Windows the statement:
File.new("myfile", "rb")
is required.

The docs just seem to say that the "b" is a Windows-only thing, not what
happens on other platforms. Will the "b" flag just be filtered out on
Linux/OS X?


Best regards,

Jari Williamsson

 
Reply With Quote
 
 
 
 
Wolfgang Nádasi-Donner
Guest
Posts: n/a
 
      11-09-2007
Jari Williamsson wrote:
> To open binary files, on Windows the statement:
> File.new("myfile", "rb")
> is required.
>
> The docs just seem to say that the "b" is a Windows-only thing, not what
> happens on other platforms. Will the "b" flag just be filtered out on
> Linux/OS X?
>
>
> Best regards,
>
> Jari Williamsson


On Windows files will usually have line breaks build by the sequence
"\r\n". When reading such a file in normal mode, the "\r" will be
deleted and not inside the String. When writing data to a file, each
"\n" will be replaced by "\r\n".

When using "rb" or "wb" on Windows, the data will be unchanged.

On Linux/OS X the line break character in a file is "\n", so the "b"
mode doesn't have any effect.

Wolfgang Nádasi-Donner
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Daniel Berger
Guest
Posts: n/a
 
      11-09-2007
Jari Williamsson wrote:
> To open binary files, on Windows the statement:
> File.new("myfile", "rb")
> is required.
>
> The docs just seem to say that the "b" is a Windows-only thing, not what
> happens on other platforms. Will the "b" flag just be filtered out on
> Linux/OS X?


It is ignored on other platforms, yes.

Regards,

Dan


 
Reply With Quote
 
Rob Biedenharn
Guest
Posts: n/a
 
      11-09-2007

On Nov 9, 2007, at 10:59 AM, Daniel Berger wrote:

> Jari Williamsson wrote:
>> To open binary files, on Windows the statement:
>> File.new("myfile", "rb")
>> is required.
>> The docs just seem to say that the "b" is a Windows-only thing, not
>> what happens on other platforms. Will the "b" flag just be filtered
>> out on Linux/OS X?

>
> It is ignored on other platforms, yes.
>
> Regards,
>
> Dan


It's not "ignored", it just has no effect because there's no
difference between "binary" mode and the default for Unix-like systems.

-Rob

Rob Biedenharn http://agileconsultingllc.com
http://www.velocityreviews.com/forums/(E-Mail Removed)


 
Reply With Quote
 
7stud --
Guest
Posts: n/a
 
      11-09-2007
Jari Williamsson wrote:
> To open binary files, on Windows the statement:
> File.new("myfile", "rb")
> is required.
>
> The docs just seem to say that the "b" is a Windows-only thing, not what
> happens on other platforms. Will the "b" flag just be filtered out on
> Linux/OS X?
>
>


1) Different os's use different characters for newlines.

2) In Ruby, and other languages, when you read or write a file, ruby
automatically converts all newlines from any os to: '\n'. That way,
when you write a file, you can have your code write a '\n' to the file
and ruby will take care of converting the '\n' to the proper newline for
your system. Likewise, when you read a newline from a file, you can
assume the newline is a '\n' because ruby will convert the actual
newline to a '\n'. In other words, you can write code that assumes '\n'
is the newline on any os--even though the actual newline for that os may
be something else.

3) When you open a file in binary mode, you are directing ruby *not* to
do any newline conversions. That means you can no longer assume the
newlines are '\n'. The newlines you read will be the actual newlines
that are in the file. Similarly, you can no longer write a '\n' to the
file and expect ruby to convert it to the proper newline for the os. In
other words, what you read from a file is exactly what's in the file,
and what you write to the file is exactly what's in your write or puts
statement.

4) Because newlines on unix are a '\n', ruby doesn't have to do any
conversions when you read or write a text file in normal mode.
Therefore, if you open a file in binary mode on a unix os, which tells
ruby not to do any conversions, there is no difference. What you read
from a file is exactly what's in the file, i.e. the newline in the file
and what ruby returns to you as the newline are identical, and when you
write a '\n' to the file, an actual '\n' gets written to the file.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Converting JPG file ppt file [Powerpoint] file zxcvar Digital Photography 7 06-22-2009 07:54 PM
Reading of file by next of map file and by next of file descriptor. =?ISO-8859-2?Q?Miros=B3aw?= Makowiecki C++ 1 07-10-2007 02:46 AM
How to create MDF file (.mdf) file from XML file. Dave ASP .Net 1 06-07-2007 11:32 PM
In file parsing, taking the first few characters of a text file after a readfile or streamreader file read... .Net Sports ASP .Net 11 01-17-2006 12:44 AM
An Automated process of watching a network file folder, reading a file in it and deleting the file using ASP.NET ? Luis Esteban Valencia Muoz ASP .Net 3 06-04-2005 10:56 AM



Advertisments