1

私は、ファイルを取り、スペースの後の最後の 4 文字を切り取り、それらを新しいファイルに書き込む小さなプログラムを書いています。これを実行してからコンソールに出力するように指示すると、正常に動作します。それらは正常に表示され、すべてが機能します。しかし、BufferedWriter を使用して新しいファイルに書き込むと、そのファイルをチェックすると、そのファイルに奇妙な文字列が表示されます。これが私のコードです:

package trimmer;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class trimmer {

private File file;
private File newfile;

private Scanner in;

public void Create() {

    String temp, temp1;

    try {

        setScanner(new Scanner(file));
    } catch (FileNotFoundException e) {
        System.out.println("file not found!!");

    }

    if (!newfile.exists()) {
        try {
            newfile.createNewFile();
            FileWriter fw = new FileWriter(newfile.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            while (in.hasNextLine()) {
                temp1 = in.nextLine();
                temp = temp1.substring(temp1.lastIndexOf(' ') + 1);
                System.out.println(temp);
                bw.write(temp);
            }
            bw.close();
            System.out.println("done!");

        } catch (IOException e) {
            System.out.println("Could not make new file: " + newfile + " Error code: " + e.getMessage());
        }
    }

}

public Scanner getScanner() {
    return in;
}

public void setScanner(Scanner in) {
    this.in = in;
}

public File getFile() {
    return file;
}

public void setFile(File file) {
    this.file = file;
}

public File getNewfile() {
    return newfile;
}

public void setNewfile(File newfile) {
    this.newfile = newfile;
}

}

ファイルを確認すると、次のようになります。

䐳噔吳商吳啍唳噎吳剄唳剄䘳剄唳噎吳商䠳卉䌳䕎䜳䱁䠳卉䴳㉕倳乓䐳䍐䐳啐吳䍖吳乓吳啍䔳䥘䌳噔匳剕唳乓唳䅍䌳䕎䜳䱁䴳㉕倳乓䐳䍐䐳啐吳䍖䠳卉吳乓吳啍䔳䥘䌳噔匳剕唳乓唳䅍

なぜこれが起こるのか誰か教えてもらえますか?

4

1 に答える 1

2

FileWriter は、プラットフォームのデフォルトの文字エンコーディングを使用します。これが必要なエンコーディングでない場合は、適切に選択された文字エンコーディングで OutputStreamWriter を使用する必要があります。

于 2013-03-28T03:26:30.223 に答える