Java 读取文本文件时显示的文本不正确

Java 读取文本文件时显示的文本不正确,java,text-files,Java,Text Files,我正在写一个程序来读取文本文件。打印读取的值时,值显示不正确。 文本文件包含以下数据 This is line one This is line two This is line three This is line four 读取文本文件的代码如下所示: import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class SearchFile { pub

我正在写一个程序来读取文本文件。打印读取的值时,值显示不正确。 文本文件包含以下数据

This is line one
This is line two
This is line three
This is line four
读取文本文件的代码如下所示:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class SearchFile {
    public static void main(String[] args) {

        BufferedReader br = null;

        try {

            String sCurrentLine;

            br = new BufferedReader(new FileReader("C:\\test.txt"));

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

    }
}
结果如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class SearchFile {
    public static void main(String[] args) {

        BufferedReader br = null;

        try {

            String sCurrentLine;

            br = new BufferedReader(new FileReader("C:\\test.txt"));

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

    }
}


请帮助解决此问题。为什么要将输出显示为垃圾字符。

这是一个编码问题,从输出来看,文件似乎是以某种UTF-16变体编码的。由于
FileReader
始终使用平台的默认编码,请尝试一下:

new BufferedReader(
    new InputStreamReader(
        new FileInputStream("C:\\IASTATE\\test.txt"), "UTF-16LE"));

这可能不是问题的原因,但使用
FileReader
通常是个坏主意,因为它总是使用当前平台的默认编码。所以,如果您的文件是用不同的编码创建的,它可能会打印出“垃圾”。您可以尝试执行以下操作:

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\IASTATE\\test.txt"), StandardCharsets.UTF_8));

test.txt
文件的编码替换
StandardCharsets.UTF_8

这些值似乎有一些额外的编码。你是如何创建这个文件的?如何显示(通过终端窗口、IDE控制台)?文件的编码是什么?对我来说很好。我认为是编码problem@MadProgrammer查看此链接:Eclipse IDE控制台上显示的值