Java readLine() 无法正常工作

标签 java dictionary bufferedreader java-io

我正在编写一个翻译程序,该程序从文本文件中读取翻译。此方法从文本文件中读取并将其添加到我用于字典的 Map 对象中。

public Map<String, String> loadTranslations() throws IOException {
    Map<String, String> translations = new HashMap<String, String>();
    BufferedReader in = null;
    try {
        in = new BufferedReader(new FileReader(System.getProperty("user.dir") + "\\resource\\translations.txt"));
        englWord = in.readLine();
        frenWord = in.readLine();
        translations.put(englWord, frenWord);
        System.out.println(englWord + "\n" + frenWord + "\n" + translations);
    } catch(Exception e) {
        JOptionPane.showMessageDialog(this, "An Error Occured!", "Error!", JOptionPane.ERROR_MESSAGE);
        e.printStackTrace();
    } finally {
        in.close();
    }
    JOptionPane.showMessageDialog(this, "Updated!", "", JOptionPane.INFORMATION_MESSAGE);
    return translations;
}

但是每当我运行它时,它不会打印文本文件中的单词,而是打印此内容;

潮攍ੵ渍ੴ睯ഊ摥畸ഊ瑨牥攍ੴ牯楳ഊ景畲ഊ煵慴牥ഊ晩癥ഊ捩湱ഊ獩砍ੳ楸ഊ獥癥渍ੳ数琍੥楧桴ഊ桵楴ഊ湩湥ഊ湥畦ഊ瑥渍੤楸
null
{潮攍ੵ渍ੴ睯ഊ摥畸ഊ瑨牥攍ੴ牯楳ഊ景畲ഊ煵慴牥ഊ晩癥ഊ捩湱ഊ獩砍ੳ楸ഊ獥癥渍ੳ数琍੥楧桴ഊ桵楴ഊ湩湥ഊ湥畦ഊ瑥渍੤楸=null}

文本文件仅列出英语和法语的前十个字母,因此输出应类似于;

one
un
{one=un}

如何解决这个问题?

最佳答案

如果您不指定编码,您将获得默认值 depends on how the JVM gets initialized 。您可以像这样指定显式编码:

    FileInputStream fis = new FileInputStream("test.txt");
    InputStreamReader isr = new InputStreamReader(fis, "UTF8");
    BufferedReader in = new BufferedReader(isr);

此代码读取一个文件,假设内容以 UTF8 编码。

请参阅Oracle tutorial on Character and Byte Streams .

关于Java readLine() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735328/

相关文章:

java - 无法从其他项目找到字符串资源

java - 无法在运行时设置复选框的背景颜色

java - WatchService 和 SwingWorker : how to do it correctly?

c++ - 迭代器不会遍历整个 map

objective-c - cocoa :带枚举键的字典?

java - 如何在 Java 中存储文本文件字符串以供以后使用

java - 在 Spring 上下文中从外部注入(inject)属性

javascript - LeafLet 平移和缩放行为

java - 如何使用拆分将文件中的值添加到数组中?

java - Android java 输入流读取器