2013-08-09 2 views
0

Я пытаюсь прочитать простой файл, а затем файл, который должен выбрать пользователь. Я продолжаю получать следующее сообщение об ошибке, хотя:Java 1.4.2 - Чтение файлов

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..."); 
      } 
     } 
    } 
+0

попытка заменить Erroneus линию чтения = новый BufferedReader (новый FileReader ("newDoc")); – ice

+0

@ice: Нет кавычек, 'newDoc' является' String'. – jason

+0

Возможно, попробуйте указать кодировку для файла, а не предполагать кодировку по умолчанию. –

ответ

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); 

Это распространенная ошибка; == как ссылочное равенство было только плохим проектным решением ИМО.

+0

Но я уже не определил FileReader: read = new BufferedReader (новый FileReader ("message.txt")); ? – danjonila

+1

Вам нужен еще один, если вы открываете другой файл. И в любом случае 'read.FileReader' на 100% недопустим, потому что есть метод * no * в' BufferedReader' с именем 'FileReader'. – jason

+0

Итак, для каждого файла мне нужен новый FileReader? Разве это не слишком много? Если мне понадобилось 100 FileReaders, тогда мне понадобилось бы 100 «новых» операторов (или повторить одно и то же «новое» утверждение 100 раз)? – danjonila

1

Вы не можете вызвать конструктор из объекта, только тогда, когда вы создаете объект с «новым». Вы просто сказали бы: 'line = read.readLine();' для проблемной линии.

0

BufferedReader класс не имеет способа, называемого FileReader.

Вы можете увидеть это в documentation.

Один из способов чтения файла в 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"); 
} 
Смежные вопросы