通常,当我阅读文本文件时,我会这样做:
File file = new File("some_text_file.txt");
Scanner scanner = new Scanner(new FileInputStream(file));
StringBuilder builder = new StringBuilder();
while(scanner.hasNextLine()) {
builder.append(scanner.nextLine());
builder.append('\n');
}
scanner.close();
String text = builder.toString();
可能有更好的方法,但这种方法对我来说总是很有效。
对于我现在正在处理的内容,我需要阅读一个大文本文件(大小超过700千字节)。以下是在记事本中打开的文本示例(任何Windows操作系统标配的文本):
"lang"
{
"Language" "English"
"Tokens"
{
"DOTA_WearableType_Daggers" "Daggers"
"DOTA_WearableType_Glaive" "Glaive"
"DOTA_WearableType_Weapon" "Weapon"
"DOTA_WearableType_Armor" "Armor"
但是,当我使用上面提供的方法从文件中读取文本时,输出为:
由于某种原因,我无法粘贴输出。我也试过这样读取文件:
File file = new File("some_text_file.txt");
Path path = file.toPath();
String text = new String(Files.readAllBytes(path));
......结果没有变化。
为什么输出不如预期?我也尝试过阅读我写的文本文件,但它工作得很好。
答案 0 :(得分:2)
看起来像编码问题。使用可以检测编码的工具打开文件(如Notepad ++)并查找它是如何编码的。然后使用Scanner的其他构造函数:
Scanner scanner = new Scanner(new FileInputStream(file), encoding);
或者你可以简单地试验它,尝试不同的编码。它看起来像UTF-16。
答案 1 :(得分:1)
最终扫描仪扫描仪=新扫描仪(新FileInputStream(文件),“UTF-16”);