继承和创建 UTF-8 文件的错误或错误

a bug or an error with inheritance and creating UTF-8 files

我已经测试了生成 UTF-8 文本文件的最佳且更安全的方法,但是当我在多个 abstract [=34] 中使用它时=]es,它生成 ANSI 格式 文件而不是 UTF-8 格式! 是否有任何错误或阻止它的东西? 同样,我的代码是正确的,当我将所有代码放在一个 class 中时,程序可以毫无问题地创建 UTF-8 文件。

我通过 3 个 class 文件为您提供测试所需的代码:

class A0.java:

public class A0 extends A1 {

public static void main(String[] args) {
    // if you want to use A1 which is extended by this class
    // uncomment this two lines
    // A1 run = new A1();
    // run.save();
    // But if you want to use A2 which isn't extended or inherited
    // uncomment this lines
    // A2 a2 = new A2();
    // try {
    // a2.create_new_file("c:/test.txt");
    // a2.append_line_to_file("برنامه نویسی");
    // } catch (Exception e) {
    // }
    // Question: Why in A1 we cannot produce properly UTF-8 text file?
 }
}

class A1.java:

public class A1 extends A2{
protected void save() {
    A2 a2 = new A2();
    try {
        a2.create_new_file("c:/test.txt");
        a2.append_line_to_file("برنامه نویسی");
    } catch (Exception e) {
    }
 }
}

class A2.java:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;

public class A2 {
private BufferedWriter writer;

public void create_new_file(String file_address) throws Exception {
    writer = new BufferedWriter(new FileWriter(file_address, true));
    Files.newBufferedWriter(Paths.get(file_address), Charset.forName("UTF8"));
    writer = new BufferedWriter(new FileWriter(file_address, true));
}

public void append_line_to_file(String line) throws IOException {
    try {
        writer.write(line);
        writer.newLine();
        writer.flush();
    } catch (Exception e) {
    }
 }
}

不是 Java 的错误或错误。 我的错 将源文件编码为 UTF-8。 因此,如果您使用的是 Eclipse IDE: Window > 首选项 > 常规 > 工作区,将 "Text file encoding" 设置为 "Other : UTF-8"。 其他IDE应该有类似的方法。