テキストファイルに対する入出力

import java.io.*;

public class Test {
	public static void main(String args[]) throws IOException
	{
		String str;
		int k, sw;
		char c;

		BufferedReader in = new BufferedReader(new FileReader("file1"));
		PrintStream out1 = new PrintStream(new BufferedOutputStream(new FileOutputStream("file2")));
		PrintWriter out2 = new PrintWriter(new BufferedWriter(new FileWriter("file3")));

		System.out.println("1文字ずつ読み込み,1文字ずつファイルへ書き込む");
		System.out.print("   内容は ");
		sw = 0;
		while (sw == 0) {
			k = in.read();
			c = (char)k;
			if (c != '\n') {
				System.out.print(c);
				out1.write(k);   // 全角文字が正しく出力されない
				out2.write(k);   // 全角文字も正しく出力
			}
			else {
				sw = 1;
				System.out.println();
				out1.println();
				out2.println();
			}
		}

		System.out.println("1行ずつ読み込み,1行ずつファイルへ書き込む");
		while ((str = in.readLine()) != null) {
			System.out.print("   内容は ");
			System.out.println(str);
			out1.println(str);
			out2.println(str);   // 上と同じ結果
		}

		in.close();
		out1.close();
		out2.close();
	}
}
		
(出力)
1文字ずつ読み込み,1文字ずつファイルへ書き込む
  内容は 1 行目のデータ
1行ずつ読み込み,1行ずつファイルへ書き込む
  内容は 2 行目のデータ
(file2 の内容)
1 L絜ヌ・
2 行目のデータ
(file3 の内容)
1 行目のデータ
2 行目のデータ