2014-03-13 49 views
0

所以我有这样的方法来读取我的主类文件,它运行完美现在调用带有BufferedReader类的方法

reader = new BufferedReader(new FileReader("how.txt")); 
    List<String> lines = new ArrayList<String>(); 
    String line = reader.readLine(); 
    while(line != null){ 
     lines.add(line); 
     line = reader.readLine(); 
    } 
    //Choose a random one from the list 
    Random r = new Random(); 
    String randString=lines.get(r.nextInt(lines.size())); 
    System.out.println(randString); 

,问题是,我需要在多次使用此方法主要的类,我想为这个方法创建一个类,这样我就不必复制和粘贴我想读取的不同文件的整个方法。我试图创建类:

public class reader { 

public static String readfile (String file) throws IOException{ 
    BufferedReader reader = new BufferedReader(new FileReader("file")); 
    List<String> lines = new ArrayList<String>(); 
    String line = reader.readLine(); 
    while(line != null){ 
     lines.add(line); 
     line = reader.readLine(); 
    } 
    //Choose a random one from the list 
    Random r = new Random(); 
    String randString=lines.get(r.nextInt(lines.size())); 
    System.out.println(randString); 

    return file; 
} 

}

但是当我调用该方法的主类是这样的:

String randString = reader.readfile("file.txt"); 

它给了我一个错误说的方法“ reafile(String)“对于BufferedReader类型是未定义的。

那么我该如何解决这个问题?或者,你如何在不同的类中创建方法并在主类中调用它? 谢谢:)

+0

有几个问题会影响如何编写这个问题。有多个文件吗?文件是否很长,以至于你不想将它们存储在内存中?你会为同一个文件多次使用该方法吗? –

+0

您使用的是Java 7吗?如果是,使用'Files.readAllLines()' – fge

+0

@fge我在哪里放? – underthemistletoe

回答

0

您的课程您的读者对象被称为reader。最好将你的班级重新命名为MyReader。 由于此命名冲突,某些行被错误解释。你想要的是MyReader.readfile(file);,和你的程序看到的是BufferedReader.readfile(file);,因为你的地方有型的reader对象BufferedReader

+0

您需要将包含该功能的类导入到您的主类中。 –

0

看来你reader(对象)是不是类型reader(类),但BufferedReader类(其他类)的。这是你需要清理的东西。我建议你稍微重新命名你的类/对象。它现在有点混乱。

0

想必在你的 '读取' 对象

字符串randString = reader.readfile( “file.txt的”);

不是指您的类'reader',而是您可能在代码中声明了一些名为'reader'的类型为'BufferedReader'的变量。

0

线

BufferedReader reader = new BufferedReader(new FileReader("file")); 

应该

BufferedReader reader = new BufferedReader(new FileReader(file)); 

您没有使用的输入参数。

+0

仍然给我同样的错误:/ – underthemistletoe

0

编辑:我意识到你的错误!

阅读并思考它。

FileReader是连接到您的文本文件的字符连接流。你需要创建一个文件。除非您提示用户并将其提供给FileReader对象,否则字符串不会切断它。

一个良好的开端是这样的:

import java.io.*; 
    class ReadAFile { 
     public static void main(String[] args){ 
      Scanner in = new Scanner(System.in); 
      System.out.println("ENTER FILE NAME"); 
      String fileName = in.nextLine(); 
      try{ 

       File myFile = new File(fileName); 
       FileReader fileReader = new FileReader(myFile); 
       BufferedReader reader = new BufferedReader(fileReader); 
       /* WE CHAINED THE FileReader to a BufferedReader;*/ 
       //additional operations 
      }catch(exception ex){ 
       ex.printStackTrace(); 
      } 
    } 

你可以把所有这里面的其他类,如果你的愿望。只需确保您将类名称大写。尽管为了避免混淆,我会将其命名为不同的东西。也许尝试LoadFile并在其中创建一个loadFile方法。

沿着这

东西线然后,所有你需要做的是通过在一个文件中。一旦传入,你可能想要返回文件中的行?我可以帮助解决任何其他问题

+0

仍然给出相同的错误“reafile(String)”对于BufferedReader类型是未定义的。“ – underthemistletoe

+0

如果这是您的错误,那么您没有调用readfile,因为我放下了。你主要的方法调用 – StreamingBits

+0

你能解释一下吗?我试图复制和粘贴你放下的代码,但它仍然给我那个错误。 – underthemistletoe