0

我正在尝试读取一个简单的文件,然后是用户应该选择的文件。我不断收到以下错误:

Readzilla.java:37:找不到符号

符号:方法 FileReader(java.lang.String)

位置:类 java.io.BufferedReader

line = read.FileReader(newDoc);

这是代码。

import java.io.*;

    public class Readzilla
    {
        public static void main(String[] args) throws IOException
        {
            String line;
            BufferedReader read;
            // BufferedReader "read" reads the file
            BufferedReader in;
            // BufferedReader "in" reads the input sent by the user  
            String loop;
            // "loop" decides whether another document should be read

            in = new BufferedReader(new InputStreamReader(System.in));
            read = new BufferedReader(new FileReader("message.txt"));
            line = read.readLine();

            while(line != null)
            {
                System.out.println(line);
                line = read.readLine();
            }

            // read another document
            System.out.println("Would you like to read another document? (Y/N)");
            loop = in.readLine();
            loop = loop.toUpperCase();

            if (loop == "Y")
            {
                do
                {
                    System.out.println("What file (.txt) would you like to read?");
                    String newDoc = in.readLine();
                    // newDoc reads a text file of the user's choosing
                    line = read.FileReader(newDoc);
                    //  ^ This line constantly gives errors
                    System.out.println("Reading...");
                    line = read.readLine();

                    while(line != null)
                    {
                        System.out.println(line);
                        line = read.readLine();
                    }

                    // read another document
                    System.out.println("Would you like to read another document? (Y/N)");
                    loop = in.readLine();
                }
                while (loop == "Y");    
            }
            else
            {
                System.out.println("Closing Program...");
            }
        }
    }
4

3 回答 3

2

你的问题是这一行:

line = read.FileReader(newDoc);

FileReader类上没有命名方法BufferedReader,这是编译器解释该行的方式。FileReader本身就是一个类,看起来您正试图打开一个新文件进行阅读。因此,您会想说:

BufferedReader doc = new BufferedReader(new FileReader(newDoc));

在那之后,你想更换

line = read.readLine();

line = doc.readLine()

因为这就是您从BufferedReader doc.

此外,您在这里遇到问题(我看到了两次):

loop == "Y"

在 Java 中,==引用相等。你绝对希望这里的价值平等,所以说:

"Y".equals(loop);

这是一个常见的错误;==因为仅参考相等性是 IMO 的糟糕设计决策。

于 2013-08-09T13:58:38.287 回答
1

只有在使用“new”创建对象时,才能从对象调用构造函数。你只会说'line = read.readLine();' 为问题线。

于 2013-08-09T13:58:29.950 回答
0

BufferedReader类没有名为FileReader.

您可以在文档中看到它。

在 Java 1.4.2 中读取文件的一种方法是:

try
{
    String line;
    File file = new File(file);
    BufferedReader inFile = new BufferedReader(new FileReader(file));
    while((line = inFile.readLine()) != null)
    {
            System.out.println(line)
    }
    inFile.close();
}
catch (IOException e)
{
    System.out.println("problem with file");
}
于 2013-08-09T14:02:56.873 回答