以下代码适用于具有完整英语内容但不包含俄语内容的文件。如何使其适用于俄罗斯?
try(BufferedReader fileOut = new BufferedReader(new FileReader(file))){
for(String line; (line = fileOut.readLine()) != null; ){
if(line.contains(commandString))
System.out.println(count + ": " + line);
count++;
}
}
UPD:
我试着写:这只有当行包含一个单词然后输出时才有效,例如:“привет”如果一行包含多个单词则没有输出,例如“приветкакдела”
new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1251"))
p.s:非常感谢答案
答案 0 :(得分:2)
您需要指定能够读取俄语字符的编码。请勿使用FileReader
,因为它将使用默认平台编码。
改为使用
new BufferedReader(new InputStreamReader(fileDir), "UTF8");
答案 1 :(得分:0)
使用以下方法读取任何语言的任何文件的文件内容。 我创建了一个FileUtil.java,这个方法就是它的一部分。它方便,效果很好......
工作代码的关键是 charset :
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))
整个方法如下:
public static String getFileContent(File file) throws IOException
{
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
sb.append(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}