我正尝试在带有资源块的try中创建一个新的PrintWriter对象,如下所示,但这给我一个错误,提示outFile cannot be resolved to a type
:
public class DataSummary {
PrintWriter outFile;
public DataSummary(String filePath) {
// Create new file to print report
try (outFile = new PrintWriter(filePath)) {
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
}
}
编辑:
我不想在try块中声明PrintWriter对象的原因是因为我希望能够在类的其他方法中引用outFile
对象。
似乎我无法使用资源进行尝试,因此我在正常的try / catch / finally块中创建了它。
正在创建文本文件。但是,当我尝试用另一种方法写入文件时,似乎没有在文本文件test.txt
中打印任何内容。
这是为什么?
public class TestWrite {
PrintWriter outFile;
public TestWrite(String filePath) {
// Create new file to print report
try {
outFile = new PrintWriter(filePath);
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
} finally {
outFile.close();
}
}
public void generateReport() {
outFile.print("Hello world");
outFile.close();
}
}
答案 0 :(得分:1)
我将展示使用try-with-resources
并调用另一种方法的首选方法,而不是尝试在构造函数中完成所有操作。即,将 closeable 资源传递给另一种方法。但我强烈建议您将此类资源的开启者用于关闭这些资源。喜欢,
public void writeToFile(String filePath) {
try (PrintWriter outFile = new PrintWriter(filePath)) {
generateReport(outFile);
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
}
}
private void generateReport(PrintWriter outFile) {
outFile.print("Hello world");
}