ruby1.8.7[i386-mingw32](Ruby Installer)、Windows で開発しています。
テキストをファイルにUTF-8で出力したいです。

例として、テキストファイル(中身はSJIS)を読み込んで、別のファイルに内容は同じで
UTF-8で出力するプログラムを書きました(ソースの文字コードは SJIS)が、あってますか?

require 'nkf'

inFileName = ARGV[0]   # 入力ファイル名
outFileName = ARGV[1]  # 出力ファイル名

outFile = open(outFileName, "w")
open(inFileName, "r") {|file|
 while line = file.gets
  line = NKF.nkf("-Sw", line);
  outFile.puts line
 end
}
outFile.close

java だと以下のように、ファイルハンドルを開くときに文字コードを指定し、そこに書き込んだ内容は、自動的にその文字コードになります。

FileOutputStream fos = new FileOutputStream(outFileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println("あいうえお");

Ruby 1.8系の場合は文字列は単なるbyte列であり、入力のテキストファイルから読み込んだ文字列はShiftJISのバイト列です。
そのバイト列に対して NKF ライブラリで UTF-8 のバイト列にした後で、
出力ファイル用のファイルハンドルに書き込むと、write はそのバイト列をそのままファイルに格納するだけ、と理解しました。
他に正しい方法があれば教えてください。