Java:未检测到PrintWriter对象

时间:2013-05-02 18:49:38

标签: java printwriter

我在让java识别我的PrintWriter对象'out'时遇到了一些麻烦。我不确定问题是什么。

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();


}

3 个答案:

答案 0 :(得分:2)

try

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

答案 1 :(得分:2)

out变量的范围目前仅在try块的范围内。在try块之前声明它,以便在块结束后可用。

您需要将其初始化为null,这样您就不会收到“变量可能尚未初始化”错误。然后,当您尝试在null块之后使用它时,您需要测试它是否为try

答案 2 :(得分:0)

PrintWriter out仅在try块内可见。从外部访问它将导致编译错误。

你可以在try块之外移动它的声明,以便它在函数storeInput的孔体中可见,但是你必须检查ist是否在之前被初始化陈述

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();
        }
    }
}
相关问题