idea 提示 'try' can use automatic resource management,java7新特性

idea会提示 'try' can use automatic resource management。

Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。

新的语句支持包括流以及任何可关闭的资源。

public static void filyCopy(File one,File two){
    FileInputStream fileInput = null;
    FileOutputStream fileOutput = null;
    try {
        fileInput = new FileInputStream(one);
        fileOutput = new FileOutputStream(two);
        byte[] b = new byte[1024];
        int len = 0;
        while((len = fileInput.read(b)) != -1){
            fileOutput.write(b, 0, len);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {//释放资源
        try {
            if(fileInput != null){
                fileInput.close();
            }
            if(fileOutput != null){
                fileOutput.close();
            }
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }
}

使用 try-with-resources 语句来简化代码如下: 

public static void filyCopy2(File one,File two){
    try (FileInputStream fileInput = new FileInputStream(one);
            FileOutputStream fileOutput = new FileOutputStream(two);){
        byte[] b = new byte[1024];
        int len = 0;
        while((len = fileInput.read(b)) != -1){
            fileOutput.write(b, 0, len);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
 

在这个例子中,数据流会在 try 执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。

注:目前java.lang.AutoCloseable接口的子接口或实现类如下:

所有已经子接口: 

AsynchronousByteChannel, AsynchronousChannel, BaseStream<t,s >, ByteChannel, CachedRowSet, CallableStatement, Channel, Clip, Closeable, 
Connection, DataLine, DirectoryStream , DoubleStream, FilteredRowSet, GatheringByteChannel, ImageInputStream, ImageOutputStream, InterruptibleChannel,
z-1659a5f2-2e7d-4764—bcf4-fd3da3defa90, JavaFileManager, JdbcRowSet, JMXConnector, JoinRowSet, Line, LongStream, MidiDevice, MidiDeviceReceiver, 
MidiDeviceTransmitter, Mixer, MulticastChannel, NetworkChannel, ObjectInput, ObjectOutput, Port, PreparedStatement, ReadableByteChannel, Receiver,
z-7e1cced6- a1cb-46be-b5a1-b3f95ef63540, RMIConnection, RowSet, ScatteringByteChannel, SecureDirectoryStream , SeekableByteChannel, Sequencer, 
SourceDataLine, StandardJavaFileManager, Statement, Stream , SyncResolver, Synthesizer, TargetDataLine, Transmitter, WatchService, WebRowSet, WritableByteChannel 
 

 所有已知实现类: 

AbstractInterruptibleChannel, AbstractSelectableChannel, AbstractSelector, AsynchronousFileChannel, AsynchronousServerSocketChannel, AsynchronousSocketChannel, 
AudioInputStream, BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter, ByteArrayInputStream, ByteArrayOutputStream, CharArrayReader, 
CharArrayWriter, CheckedInputStream, CheckedOutputStream, CipherInputStream, CipherOutputStream, DatagramChannel, DatagramSocket, DataInputStream, DataOutputStream,
DeflaterInputStream, DeflaterOutputStream, DigestInputStream, DigestOutputStream, FileCacheImageInputStream, FileCacheImageOutputStream, FileChannel, FileImageInputStream, 
FileImageOutputStream, FileInputStream, FileLock, FileOutputStream, FileReader, FileSystem, FileWriter, FilterInputStream, FilterOutputStream, FilterReader, FilterWriter,
Formatter, ForwardingJavaFileManager, GZIPInputStream, GZIPOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, InflaterInputStream, InflaterOutputStream, 
InputStream, InputStream, InputStream, InputStreamReader, JarFile, JarInputStream, JarOutputStream, LineNumberInputStream, LineNumberReader, LogStream, MemoryCacheImageInputStream, 
MemoryCacheImageOutputStream, MLet, MulticastSocket, ObjectInputStream, ObjectOutputStream, OutputStream, OutputStream, OutputStream, OutputStreamWriter, Pipe.SinkChannel, 
Pipe.SourceChannel, PipedInputStream, PipedOutputStream, PipedReader、 PipedWriter, PrintStream, PrintWriter, PrivateMLet, ProgressMonitorInputStream, PushbackInputStream, 
PushbackReader, RandomAccessFile, Reader, RMIConnectionImpl, RMIConnectionImpl_Stub, RMIConnector, RMIIIOPServerImpl, RMIJRMPServerImpl, RMIServerImpl, Scanner, SelectableChannel, 
Selector,z-8b0059cc-8f15-42f8-ab0a- 1038ad85c685, ServerSocket, ServerSocketChannel, Socket, SocketChannel, SSLServerSocket, SSLSocket, StringBufferInputStream, StringReader, 
StringWriter, URLClassLoader, Writer, XMLDecoder, XMLEncoder, ZipFile, ZipInputStream, ZipOutputStream 
  

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: IDEA是一款Java语言开发的集成环境,被公认为最好的Java开发工具之一。它在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面具备超常的功能。对于IDEA的使用,新手可以先下载安装IDEA软件,并学习IDEA的工作空间和Java项目的移动。打开Java项目的方法是,在IDEA中选择“File”菜单,然后点击“Open”,选择Java项目所在的文件夹,即可打开Java项目。希望这些信息对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Java基础】IDEA入门配置及创建](https://blog.csdn.net/zsy3757486/article/details/124163050)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Java新手小白入门篇 IDEA的安装教程(超详细)](https://blog.csdn.net/weixin_46030002/article/details/125515530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值