0

我想不通。我正在尝试从我的程序中写出文本。假设是一个字数统计程序。告诉我行数、字符数、字数。然后我显示结果以及用户正在搜索的单词和该行。

(即搜索java)

第 5 行:Java 岛包含 Java

第9行:我喜欢喝java

它不显示文本。它的显示像象形文字。

第 2 行:DN{c�<���\$H�Uz�X����h4[����bA.�D��Ja�8^)|��k�ˠ���� <Τ���QJ�����P˒��nI"�(��vc�Bi�"&�/�|qI�W6{pa�0��[���[M��; �FU�! }4�x�����{�-��(����V�k@�We֭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
4

2 回答 2

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 的文件

于 2012-06-11T14:06:53.347 回答
0

默认 OS 编码按照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));
于 2012-06-11T13:39:31.510 回答