首页 > 编程语言 >Java中使用try-with-resources

Java中使用try-with-resources

时间:2023-11-24 14:33:36浏览次数:32  
标签:Java scanner try File new txt resources Scanner

Java 7 中引入的对资源 try-with-resources ,声明在 try 块中使用的资源,并保证资源将在该块执行后关闭。声明的资源需要实现自动关闭接口

 

1.使用资源try

典型的try-catch-finally块:

Scanner scanner = null;
try {
    scanner = new Scanner(new File("test.txt"));
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} finally {
    if (scanner != null) {
        scanner.close();
    }
}

 

使用资源try

try (Scanner scanner = new Scanner(new File("test.txt"))) {
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
} catch (FileNotFoundException fnfe) {
    fnfe.printStackTrace();
}

 

2.使用多个资源try-with-resources 块,分号分隔

try (Scanner scanner = new Scanner(new File("read.txt"));
    PrintWriter writer = new PrintWriter(new File("write.txt"))) {
    while (scanner.hasNext()) {
    writer.print(scanner.nextLine());
    }
}

 

3.注意:

(1)首先定义的资源会最后关闭。

(2)若要构造将由 try-with-resources 块正确处理的自定义资源,该类应实现 Closeable 或 AutoCloseable 接口并重写 close 方法。

public class MyResource implements AutoCloseable {
    @Override
    public void close() throws Exception {
        System.out.println("Closed MyResource");
    }
}

 

4.Java 9 - 可以在资源try块中使用final甚至有效的final变量
final Scanner scanner = new Scanner(new File("read.txt"));
PrintWriter writer = new PrintWriter(new File("write.txt"))
try (scanner;writer) { 
}

 

标签:Java,scanner,try,File,new,txt,resources,Scanner
From: https://www.cnblogs.com/coder-Fish/p/17853407.html

相关文章

  • 无涯教程-Tk - Entry部件函数
    输入窗口小部件用于接受一行文本作为输入。在所有Tk应用程序中,几乎都必须获得用户输入。条目小部件的语法如下所示-entryentryNameoptionsEntry-参数下表中列出了条目小部件可用的选项-Sr.No.Syntax&Remark1-backgroundcolor用于设置小部件的背景颜色。2-bo......
  • Java设计模式之代理模式
    在某些情况下,我们希望通过一个中间代理来控制对某个对象的访问,这可能是因为原始对象的创建或访问涉及复杂的逻辑,或者我们想要在访问原始对象之前或之后执行一些操作代理模式提供了一个代理对象,它充当了原始的对象的替代品,以控制对原始对象的访问。代理对象与原始对象实现相同的接口......
  • 值得收藏的一些HTML、JavaScript、ASP代码
    1.CDONTS.NewMail组件使用说明 SetMailObject=Server.CreateObject("CDONTS.NewMail") MailObject.From="发信邮箱" MailObject.To="收信邮箱" MailObject.Cc="抄送邮箱" MailObject.Bcc="密送邮箱" MailObject.Subject=&qu......
  • HTML+CSS+Javascript+Vue
    TableofContentsI.HTMLII.CSSGetStartedI.HTML按tab自动生成LabelMeaningPropertiesdiv块状元素span行间元素h1-h6标题iicon图标strong字体加粗a超链接img插入图片video插入视频controlsinput表单(输入账号、......
  • java 超大文件上传_Java+超大文件上传
    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。但无论插件再怎么灵活,也难以应付所有的需求,比如,你要上......
  • java.sql.SQLException: ORA-02289: 序列不存在
    --CreatesequencecreatesequenceLOG_IDminvalue1maxvalue9999999999999999999999999999startwith1incrementby1cache20;如果检查没问题的话,不妨试试上面的代码,就是sequenceLog_ID未创建,希望能有所帮助!......
  • java.lang.IllegalArgumentException: Invalid uri......---------: Invalid query解
    报的错误信息:java.lang.IllegalArgumentException:Invaliduri'http://127.0.0.1:12000/GetList?txt_stratTime=2020-07-20&txt_endTime=2020-07-26&txt_fzr=&txt_bgr=&txt_jbr=中文信息&SortExpression=ASSIGNEE&SortDirection=desc':Invalidq......
  • javaString字符串转换成加减乘除
    字符串不用分割直接进行加减乘除的操作每天一个无用小技巧!try{ScriptEnginejavascript=newScriptEngineManager().getEngineByName("JavaScript");Stringstring="1*3-6+8/2";//这里是强制转换成数据类型Doubledouble=(Double)javascript.eval(string);......
  • 如何将一个JAR包添加到Java应用程序的Boot Classpath中?
    1.在启动脚本中使用-bootstrap或-Xbootclasspath选项这两个选项的使用方式如下:-bootstrap选项:java-bootstrap/path/to/your.jar-cp/path/to/your/app.jarYourMainClass-Xbootclasspath选项:java-Xbootclasspath/a:/path/to/your.jar-cp/path/to/your/app.jarYo......
  • Caused by: android.content.res.Resources$NotFoundException: File res/drawable/**
    Causedby:android.content.res.Resources$NotFoundException:Fileres/drawable/*1、log显示01-0109:04:12.245D/AndroidRuntime(2938):ShuttingdownVM01-0109:04:12.255E/AndroidRuntime(2938):FATALEXCEPTION:main01-0109:04:12.255E/AndroidRuntime(293......