我无法理解。我正在尝试从我的程序中写出文本。这是一个字数统计程序。显示行数,字符数,字数。然后我显示结果以及用户正在搜索的单词和该行。
(即搜索java)
第5行:java岛包含Java
第9行:我喜欢喝java
它没有显示文字。它显示像heiroglyphics。
第2行:DN {c < \ $H Uz X h4[ bA. D Ja 8^] | k ˠ <ΤQJP˒nI “(VCBI” &安培; / | qIW6 {PA0 [[ !米; FU的} {4倍 - (VK @我们֭T" 第3行: N U Ӣ͇ ? 第4行:ӺӺ鬵P D< } L> o V Ex Q| ) ' g I B 3b ( “3 T 7 = s g F ;KN r _ “: B s sP [6 ; PK! N _rels / .rels (
public void readFromFile(String filename)
{
LineNumberReader lineNumberReader = null;
try {
lineNumberReader = new LineNumberReader(new FileReader(filename));
String line = null;
BufferedWriter output = new BufferedWriter(new FileWriter("output.txt"));
String ask = "Enter Word";
String find = JOptionPane.showInputDialog(ask);
Scanner scan = new Scanner(new File("test.txt"));
while ((line = lineNumberReader.readLine()) != null)
{
line = scan.nextLine();
if(line.indexOf(find) >= -1)
{
output.write("Line " + lineNumberReader.getLineNumber() +
": " + line);
output.newLine();
}
}// end of while
output.close();
} // end of try
catch (FileNotFoundException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally {
try {
if (lineNumberReader != null)
{
lineNumberReader.close();
}
} // end of try
catch (IOException ex)
{
ex.printStackTrace();
}
}// end of finally
} // end of function
答案 0 :(得分:1)
我不明白你为什么要这样做:
while ((line = lineNumberReader.readLine()) != null)
{
line = scan.nextLine();
if(line.indexOf(find) >= -1)
{
output.write("Line " + lineNumberReader.getLineNumber() +
": " + line);
output.newLine();
}
}// end of while
而不是:
while ((line = lineNumberReader.readLine()) != null)
{
if(line.indexOf(find) >= -1)
{
output.write("Line " + lineNumberReader.getLineNumber() +
": " + line);
output.newLine();
}
}// end of while
您不需要2个读者。我不明白为什么其中一个读者正在读取最终文件而另一个正在读取一个名称来自arg的文件
答案 1 :(得分:0)
默认操作系统编码在System.getProperty("file.encoding")
中设置使用。
你可以明确选择一个。
final String encoding = "UTF-16LE"; // Or "Cp1252" or "UTF-8"
lineNumberReader = new LineNumberReader(new InputStreamReader(new FileInputStream(filename), encoding));
...
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.txt"), encoding));
...
Scanner scan = new Scanner(new File("test.txt", encoding));