为了账号安全,请及时绑定邮箱和手机立即绑定

PrintWriter 对象变量在与资源一起使用时无法解析为类型

PrintWriter 对象变量在与资源一起使用时无法解析为类型

慕桂英4014372 2021-12-30 16:28:59
我正在尝试使用如下资源块在 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 来做资源,所以我在一个普通的 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();  }}
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

我将演示使用 atry-with-resources并调用另一个方法的首选方法,而不是尝试在构造函数中完成所有操作。即,将可关闭资源传递给其他方法。但我强烈建议您让此类资源的开启者负责关闭它们。喜欢,


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

}


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信