我在让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();
}
答案 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();
}
}
}