Java打印流浪角色而不是实际

时间:2014-03-20 16:16:33

标签: java bufferedreader filewriter printwriter

我有一个简单的java程序,它从文件中读取一行并将其写入另一个文件。

我的源文件包含以下字词:it's,但目标文件包含it�s等字词。

我使用BufferedReader br = new BufferedReader(new FileReader(inputFile));来读取源文件,使用PrintWriter writer = new PrintWriter(resultFile, "UTF-8");来编写目标文件。

如何获取目标文件中的实际字符?

2 个答案:

答案 0 :(得分:2)

创建BufferedReader时需要指定CharacterSet,否则使用平台默认编码:

BufferedReader br = new BufferedReader(new FileReader(inputFile),"UTF-8");

答案 1 :(得分:0)

我知道这个问题有点老了,但我还是认为我已经放下了我的答案。

您可以使用java.nio.file.Files读取文件,使用java.io.RandomAccessFile写入目标文件。例如:

public void copyContentsOfFile(File source, File destination){
    Path p = Paths.get(source.toURI());
    try {
        byte[] bytes = Files.readAllBytes(p);
        RandomAccessFile raf = new RandomAccessFile(destination, "rw");
        raf.writeBytes(new String(bytes));
        raf.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}