|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hi
I am writing a ruby script to insert some content into the beginning of some files. The files would be used in Windows or Mac, when I use File.puts method to write the file, it changes the line ending of the file. Any way to let ruby keep the previous line-ending of the file? Thanks -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Cong Chan wrote:
> Hi > > I am writing a ruby script to insert some content into the beginning of > some files. > > Thanks So you want to add stuff to the beginning of a file? Well, as far as I know, you can't just add stuff to the beginning, you have to create a new file, add your stuff, then append the old stuff at the end of the new file. new_file = File.new("your_new_file.txt", "w+") new_file.write("I'm at the beginning\n") IO.readlines("your_old_file.txt").each do |line| new_file.write(line) end new_file.close ~Jeremy -- Posted via http://www.ruby-forum.com/. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Nov 6, 2007, at 1:42 AM, Cong Chan wrote:
> I am writing a ruby script to insert some content into the beginning > of > some files. > > The files would be used in Windows or Mac, when I use File.puts method > to write the file, it changes the line ending of the file. > > Any way to let ruby keep the previous line-ending of the file? Not automatically. If you know before hand that the line-ending convention is uniform you can open the file in binary mode, pick a few bytes, and look for the first line separator (=~ /\015?\012/). Then write in binary mode and set $\ to that capture, aka the ouput record separator. Use print instead of puts, since puts does not check $\ but prints "\n" unconditionally. -- fxn |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On 11/5/07, Xavier Noria <fxn@hashref.com> wrote:
> Then write in binary mode and set $\ to that capture, aka the ouput > record separator. Use print instead of puts, since puts does not check > $\ but prints "\n" unconditionally. I'd suggest that rather than this you use write instead of print or puts and put the line breaks in explicitly. My concern over using $\ is that it's global so it affects any other Io objects, and I'm not sure it's a thread-safe global. -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/ |
|
![]() |
| Outils de la discussion | |
|
|