2015-12-17 47 views
4

因此,我今天剛剛切換到NetBeans,因爲我的eclipse已經崩潰了數倍。但是,當我正在學習閱讀文件時,我似乎無法導入FileReader的類。爲什麼FileReader不是NetBeans中的類?

當我嘗試導入FileReader的東西時,它只是問我是否想要創建方法FileReader(java.io.File)。這僅僅是Eclipse和Netbeans的區別嗎?

import java.io.BufferedReader; 
import java.io.File; 
import java.io.IOException; 



File file1 = new File("test.txt"); 

try(BufferedReader bf1 = new BufferedReader(FileReader(file1))){ 


}catch (IOException ex) { 
     System.out.println("haha"); 
} 
+4

你錯過了'new',它應該是'新的FileReader(file1)'。 – Titus

回答

4

你根本就沒有進口 - 你要麼需要一個通配符輸入:

import java.io.*; 

或特定進口:

import java.io.FileReader; 

正如提圖斯注意到,你也在使用FileReader之前缺少new。這:

try(BufferedReader bf1 = new BufferedReader(FileReader(file1))){ 

應該是:

try(BufferedReader bf1 = new BufferedReader(new FileReader(file1))){ 

現在它可能是你已經習慣了Eclipse的你比Netbeans的多個自動進口的東西 - 爲尋找共同的包(或者甚至全部包)你提到的類型,並提供爲你導入它。我不知道Netbeans在這裏的功能,但如果它有點不同,我不會感到驚訝。

無論如何,我還建議您避免使用FileReader - 它不會讓您指定用於讀取文件的編碼。從Java 7中有一個在java.nio.Files一個更方便的方法呢:

try (BufferedReader reader = Files.newBufferedReader(file1.toPath())) { 
    ... 
} 

或者剛開始時一個Path

Path file1 = Paths.of("test.txt"); 
try (BufferedReader reader = Files.newBufferedReader(path)) { 
    ... 
} 

這將默認使用UTF-8,或者你可以指定一個編碼你希望。

+0

我有一個疑問。我使用eclipse,它建議我導入一個包,如果有必要的話。netbeans不會顯示這樣的建議? –

+0

@MathewsMathai:正如我所說的,我不知道這裏的功能 - 如果不同的選項也會影響它,我不會感到驚訝。 –

+0

@JonSkeet我現在覺得很愚蠢!並感謝你的解釋,遠遠超越! – whales

3

你錯過了兩件事。首先,你必須導入類:

import java.io.FileReader; 

其次,FileReader是一類,而不是一個方法 - 你錯過了new操作:

try (BufferedReader bf1 = new BufferedReader(new FileReader(file1))) { 
    // Here ---------------------------------^ 
    // etc... 
相關問題