2010-09-22 35 views
4

嗨,我是Java語言的初學者。Java FileReader錯誤

看起來好像我的電腦根本無法識別FileReader(隨機類也無法工作)。我在不同的計算機上輸入了完全相同的代碼,它工作正常。我卸載了JDK並重新安裝了它,但仍然無法正常工作。我不知道該怎麼辦。

我的環境

三星上網本N150加。 /// windows 7 starter /// java(1.6_21標準版)/// jGrasp(1.8)。

這是我的代碼。

import java.io.*; 
import java.util.*; 

public class FileReaderGG 
{ 
    public static void main(String[] args)throws Exception 
    { 
     FileReader infile = new FileReader("todolist.txt"); 

     Scanner indata = new Scanner(infile); 

     while (indata.hasNextLine()) 
     { 
      System.out.println(indata.nextLine()); 
     } 
     infile.close(); 
    } 
} 

它給我的錯誤說 「找不到符號」

貌似這個 FileReaderGG.java:11:找不到符號 符號:構造的FileReader(java.lang.String中) 位置:類FileReader FileReader infile = new FileReader(「todolist.txt」);

還有5個錯誤。我花了一整天的時間試圖找出問題所在。 請幫我一把。

+0

該代碼是正確的,編譯和正確運行。你能檢查一下java -version嗎?可能有一些其他的java路徑? – Jayan 2010-09-22 06:52:53

+0

我的版本是從命令提示符檢查「1.6.0_21」。 – fiveroof 2010-09-22 12:43:13

+0

我從這裏下載了JDK。 http://www.oracle.com/technetwork/java/javase/downloads/index.html – fiveroof 2010-09-22 12:44:48

回答

0

我認爲你的代碼是100%正確的。它至少在我的工作結束。你是從IDE還是從命令行編譯這個程序?

+0

它來自IDE(jGrasp)。我有一個與FileReader類(FileReader.java)完全相同的文件名。一旦我刪除該文件,它就起作用了。謝謝! :) – fiveroof 2010-09-22 15:50:49

1

這意味着您正在嘗試使用不在那裏的構造函數。顯然你試圖在構造函數中輸入String,但是沒有構造函數接受只是 a String的值,但對於java.io.FileReader來說不是這樣。在同一個包(文件夾)中是否有另一個類叫做「FileReader」?如果是這樣,第8行應該是

java.io.FileReader infile = new java.io.FileReader("todolist.txt"); 

改爲。其他解決方案包括

public class FileReaderGG 
{ 
    public static void main(String[] args) throws Exception 
    { 
    String pathName = System.getProperty("user.dir") + (FileReaderGG.class.getPackage() == null ? "" : "\\" + FileReaderGG.class.getPackage().getName().replace('.', '\\')); 

    java.io.FileReader infile = new java.io.FileReader(pathName + "\\todolist.txt"); 

    java.util.Scanner indata = new java.util.Scanner(infile); 

    while (indata.hasNextLine()) 
    { 
     System.out.println(indata.nextLine()); 
    } 
    infile.close(); 
    } 
} 

注意不進口怎麼做,所有包都明確聲明。無論如何,這應該起作用。 (5)第5行得到(A)正在運行程序的路徑(希望與資源文件相同),(B)檢查它是否位於程序包中並添加所需的子文件夾(儘管如此,看來你是不是任意的,它可能是不需要的)

+0

而不是pathName +「\\ todolist.txt」,使用新的文件(文件夾,名稱) - 這確保了正確的路徑分隔符,並且也被FileReader接受。您也可以使用File.pathSeperator,因爲它在Unix上是「/」。 – Staale 2010-09-22 06:29:38

+0

*點頭*好點。感謝您的建議!我一定會記住它:3 – Supuhstar 2010-09-22 07:20:45

+0

噢,我的天......我有一個名爲FileReader.java的文件。只要我刪除它,它就會起作用。謝謝!! – fiveroof 2010-09-22 12:52:06

0

我認爲你必須進口更多的,這裏是我的意思是:

import java.util.Scanner; 
import java.util.Scanner.*; 
import java.io.FileReader; 
import java.io.FileReader.*; 

你知道,當你

import java.util.Scanner; 

它只導入「掃描儀」軟件包,但不導入掃描儀軟件包中的其他軟件包。