有没有办法在使用RandomAccessFile写入时设置编码

时间:2014-03-19 12:01:05

标签: java android encoding character-encoding

我使用 windows-1251 编码

打开文本文件
            FileInputStream is = new FileInputStream(path);
        BufferedReader br = new BufferedReader(new InputStreamReader(is,
                "windows-1251"));

然后写下这些更改:

  RandomAccessFile file = new RandomAccessFile(new File(path), "rw");
        try {
            file.write(etMainView.getText().toString().getBytes());
            file.close();
            Toast.makeText(this, "Changes saved", Toast.LENGTH_SHORT)
                    .show();
                        //..... Exception handling

问题在于它弄乱了文件中的所有非拉丁字母,当我再次打开它时,所有这些字母都被一些不可读的字符所取代。我猜RandomAccessFile默认使用UTF-8,这会引起麻烦。如何保存文件,保持我用来打开它的编码?

2 个答案:

答案 0 :(得分:3)

使用.getBytes("windows-1251")代替.getBytes(); .getBytes()使用默认的JVM编码。

答案 1 :(得分:1)

如果您想使用流apis,可以这样做

RandomAccessFile file = ....;
FileChannel fc = file.getChannel();
OutputStream os = Channels.newOutputStream(fc);
OutputStreamWriter osw = new OutputStreamWriter(os, "windows-1251");
osw.write("Some sring");

osw.flush();
file.close();