2013-05-02 2 views
1

У меня возникли проблемы с получением java для распознавания объекта PrintWriter 'out'. Я не совсем уверен, в чем проблема.Java: объект PrintWriter не обнаружен

public void storeInput(String fileName) 
{ 
    String folderName = "C:/temper/testy/"; 

    File filetest = new File(folderName, fileName); 

    System.out.println("ENTER TEXT!!!!!"); 
    String input = sc.nextLine(); 

    try { 
     PrintWriter out = new PrintWriter(
       new BufferedWriter(
       new FileWriter(filetest))); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


    out.println(filetest); 

    out.close(); 


} 

ответ

2

объявить, что за пределами try

PrintWriter out = null; 
try { 
     out = new PrintWriter(
       new BufferedWriter(
       new FileWriter(filetest))); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
2

Объем The out переменной в настоящее время только в сферу действия try блока. Объявите его перед блоком try, чтобы он был доступен после завершения блока.

Вам необходимо инициализировать его до null, чтобы вы не получили ошибку «переменная, которая не была инициализирована». Затем вам нужно будет проверить, есть ли null при попытке использовать его в блоке try.

0

PrintWriter out видна только внутри блока try. доступ к нему извне приведет к ошибке компиляции.

Вы можете переместить это объявление вне try блока так, чтобы он стал в вас случае видны в отверстии тела функции storeInput, но тогда вы должны будете проверить, инициализирован ли IST перед statments

out.println(filetest); 
out.close(); 

или лучше вы перемещаете эти сообщения буксировки в сторону блока try, поэтому, когда никакие исключения не начисляются out, всегда инициализируется.

Для close лучше разместить его внутри блока finally, таким образом вы всегда выпускаете ресурсы независимо от того, какое исключение случается.

public void storeInput(String fileName) 
{ 
    String folderName = "C:/temper/testy/"; 

    File filetest = new File(folderName, fileName); 

    System.out.println("ENTER TEXT!!!!!"); 
    String input = sc.nextLine(); 
    PrintWriter out = null; 
    try { 
     out = new PrintWriter(
       new BufferedWriter(
         new FileWriter(filetest))); 

     out.println(filetest); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } finally { 
     if(out != null) { 
      out.close(); 
     } 
    } 
}