2013-11-20 69 views
0

所以我試圖讓一個基本的閱讀器去,以便我可以稍後使用文件進行認證過程。在嘗試塊上獲取非法啓動類型

我遇到的問題是我在我的BufferedReader行上得到一個錯誤,導致我的try函數拋出一個非法啓動異常,並且無法運行。 Eclipse在br聲明的末尾顯示分號錯誤,並說我應該放一個{但我不明白爲什麼這是必要的。

BufferedReader br = new BufferedReader(new FileReader("Assign4.txt")); 

我試圖把那裏,但它打破了整個嘗試部分。

package main; 

import java.io.*; 

public class file_interface 
{ 
    BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt")); 
    BufferedReader br = new BufferedReader(new FileReader("Assign4.txt")); 

     try 
     { 
      int count = 1; 
      StringBuilder sb = new StringBuilder(); 
      String line = br.readLine();    
      while (line != null) 
      { 
       sb.append(count++); 
       sb.append(line); 
       sb.append("\n"); 
       wr.write(line); 
       line = br.readLine();  
      } 
     } 
     catch (IOException e) 
     { 
      System.err.println("Error: " + e); 
     } 

     finally 
     { 
      br.close(); 
      wr.close(); 
     } 
} 
} 
+1

任何Java語句都必須在方法中。這段代碼不是。 –

回答

4

任何Java語句都必須在方法中。這段代碼不是。

BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));作品是因爲在你file_interface類中聲明爲default field(無範圍標記被給予)和被初始化的事實。這是一個類似的事:

public class file_interface { 
    BufferedWriter wr; 
    public file_interface() { 
     wr = new BufferedWriter(new FileWriter("target.txt")); 
    } 
} 

只需創建一個方法來保存你的邏輯:

public class file_interface { 
    public void foo() { 
     //your code goes here... 
     //now this is not a field but a variable in the method 
     BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt")); 
     BufferedReader br = new BufferedReader(new FileReader("Assign4.txt")); 
     //rest of your code... 
     try { 
      //... 
     } catch (...) { 
      //... 
     } 
     //... 
    } 
} 

然後就打電話給你的方法,你的客戶端類。例如,與main方法的類:

public class AMainClass { 
    public static void main(String[] args) { 
     file_interface fi = new file_interface(); 
     fi.foo(); 
    } 
} 

再如,與其他方法的類:

public class SomeClientClass { 
    public void bar() { 
     file_interface fi = new file_interface(); 
     fi.foo(); 
    } 
} 

注意:您也應該遵循Java命名約定,所以你應該重新命名file_interfaceFileInterface甚至MyFileUtil因爲interface這個詞聽起來更像聲明一個,uhm,interface

+1

或者在一個靜態塊中。 – atk

+0

也許不是'foo',更好的建議是'main'方法(除非'foo'返回一些東西)。無論如何+1。 – Pshemo

+0

@atk這將是偉大的,如果你想拍你的腳。 –