Java_IO流结尾:NIO.2中Path、 Paths、Files类的使用

本文介绍了Java NIO.2的增强,特别是Path、Paths和Files类在文件处理中的核心API。Path作为File的升级版,提供了更多平台无关的操作。Files类则包含大量静态工具方法,方便对文件和目录进行各种操作,如复制、创建、删除等。通过这些API,开发者可以更高效地管理文件系统资源。
Java NIO 概述
  • Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新 的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目 的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。
  • Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。

在这里插入图片描述

NIO. 2
  • 随着 JDK 7 的发布,Java对NIO进行了极大的扩展,增强了对 文件处理和文件系统特性的支持,以至于我们称他们为 NIO.2。 因为 NIO 提供的一些功能,NIO已经成为文件处理中越来越重要的部分。
Path、Paths和Files核心API
  • 早期的Java只提供了一个File类来访问文件系统,但File类的功能比较有限,所 提供的方法性能也不高。而且,大多数方法在出错时仅返回失败,并不会提供异 常信息。

  • NIO. 2为了弥补这种不足,引入了Path接口,代表一个平台无关的平台路径,描

Abnormal build process termination: "D:\Program Files\IDEA\IntelliJ IDEA 2025.2\jbr\bin\java.exe" -Xmx700m -Djava.awt.headless=true "-Djna.boot.library.path=D:\Program Files\IDEA\IntelliJ IDEA 2025.2/lib/jna/amd64" -Djna.nosys=true -Djna.noclasspath=true --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED -Dexternal.project.config=C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\projects\lims.3c898e48\external_build_system -Dcompile.parallel=true -Drebuild.on.dependency.change=true -Didea.IntToIntBtree.page.size=32768 -Djdt.compiler.useSingleThread=true -Daether.connector.resumeDownloads=false -Dio.netty.initialSeedUniquifier=6045328016711105503 -Djps.use.dependency.graph=true -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2025.2 "-Didea.home.path=D:/Program Files/IDEA/IntelliJ IDEA 2025.2" -Didea.config.path=C:/Users/Administrator/AppData/Roaming/JetBrains/IntelliJIdea2025.2 -Didea.plugins.path=C:/Users/Administrator/AppData/Roaming/JetBrains/IntelliJIdea2025.2/plugins -Djps.log.dir=C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\log\build-log "-Djps.fallback.jdk.home=D:/Program Files/IDEA/IntelliJ IDEA 2025.2/jbr" -Djps.fallback.jdk.version=21.0.7 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/Administrator/AppData/Local/JetBrains/IntelliJIdea2025.2/compile-server/lims-shly_840d39d1/_temp_ -Djps.backward.ref.index.builder=true -Djps.backward.ref.index.builder.fs.case.sensitive=false "-Djps.kotlin.home=D:\Program Files\IDEA\IntelliJ IDEA 2025.2\plugins\Kotlin\kotlinc" -Dkotlin.incremental.compilation=true -Dkotlin.jps.dumb.mode=true -Dkotlin.jps.enable.lookups.in.dumb.mode=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=C:\Users\ADMINI~1\AppData\Local\Temp\kotlin-idea-8690595407329842680-is-running -Dkotlin.incremental.compilation=true -Dkotlin.jps.dumb.mode=true -Dkotlin.jps.enable.lookups.in.dumb.mode=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=C:\Users\ADMINI~1\AppData\Local\Temp\kotlin-idea-8690595407329842680-is-running -Dide.compiler.maven.path.to.home=E:\maven\apache-maven-3.6.3-bin\repository -Dide.propagate.context=false -Dintellij.platform.log.sync=true -classpath "D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/jps-builders.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/jps-builders-6.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/jps-javac-extension.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/util-8.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/util_rt.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/platform-loader.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/annotations.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/trove.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/kotlin-metadata.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/protobuf.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/rt/netty-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/jps-model.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/javac2.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/forms_rt.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/util.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/lib-client.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/aether-dependency-resolver.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/maven-resolver-connector-basic.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/maven-resolver-transport-file.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/maven-resolver-transport-http.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/idea_rt.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/JavaEE/lib/jasper-v2-rt.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/lib/util-8.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/javaFX/lib/javaFX-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/javaFX/lib/javaFX-common.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/eclipse/lib/eclipse-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/eclipse/lib/eclipse-common.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/JavaEE/lib/jps/javaee-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/platform-langInjection/lib/java-langInjection-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/Groovy/lib/groovy-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/Groovy/lib/groovy-constants-rt.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/maven/lib/maven-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/gradle-java/lib/gradle-jps.jar;D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/JPA/lib/jps/javaee-jpa-jps.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 49955 dc1fbe86-22cc-4b93-a3a1-50c9392808ed C:/Users/Administrator/AppData/Local/JetBrains/IntelliJIdea2025.2/compile-server Be careful, logger will be shut down earlier than application: Unable to make field private static java.util.IdentityHashMap java.lang.ApplicationShutdownHooks.hooks accessible: module java.base does not "opens java.lang" to unnamed module @682a0b20 Build process started. Classpath: D:/Program Files/IDEA/IntelliJ IDEA 2025.2/plugins/java/lib/jps-launcher.jar JAVAC_PROCESS[STDOUT]: # JAVAC_PROCESS[STDOUT]: # There is insufficient memory for the Java Runtime Environment to continue. JAVAC_PROCESS[STDOUT]: # Native memory allocation (malloc) failed to allocate 375328 bytes for Chunk::new JAVAC_PROCESS[STDOUT]: # An error report file with more information is saved as: JAVAC_PROCESS[STDOUT]: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\hs_err_pid22588.log JAVAC_PROCESS[STDOUT]: [thread 21232 also had an error] JAVAC_PROCESS[STDOUT]: # JAVAC_PROCESS[STDOUT]: # There is insufficient memory for the Java Runtime Environment to continue. JAVAC_PROCESS[STDOUT]: # Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPool::allocate JAVAC_PROCESS[STDOUT]: # An error report file with more information is saved as: JAVAC_PROCESS[STDOUT]: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\hs_err_pid27164.log JAVAC_PROCESS[STDOUT]: [thread 2064 also had an error] JAVAC_PROCESS[STDOUT]: # JAVAC_PROCESS[STDOUT]: # Compiler replay data is saved as: JAVAC_PROCESS[STDOUT]: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\replay_pid22588.log 2025-08-26 13:27:42,498 [ 7595] WARN - io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:444) at io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:386) at io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:585) at io.netty.channel.nio.NioIoHandler.processSelectedKeysPlain(NioIoHandler.java:530) at io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:503) at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:478) at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:203) at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:174) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1123) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) JAVAC_PROCESS[STDOUT]: # JAVAC_PROCESS[STDOUT]: # There is insufficient memory for the Java Runtime Environment to continue. JAVAC_PROCESS[STDOUT]: # Native memory allocation (malloc) failed to allocate 590480 bytes for Chunk::new JAVAC_PROCESS[STDOUT]: # An error report file with more information is saved as: JAVAC_PROCESS[STDOUT]: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\hs_err_pid18280.log JAVAC_PROCESS[STDOUT]: # JAVAC_PROCESS[STDOUT]: # Compiler replay data is saved as: JAVAC_PROCESS[STDOUT]: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\replay_pid27164.log # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 319696 bytes. Error detail: Chunk::new # An error report file with more information is saved as: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\hs_err_pid25952.log 2025-08-26 13:27:42,520 [ 7617] WARN - io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:444) at io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:386) at io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:585) at io.netty.channel.nio.NioIoHandler.processSelectedKeysPlain(NioIoHandler.java:530) at io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:503) at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:478) at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:203) at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:174) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1123) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) JAVAC_PROCESS[STDOUT]: # JAVAC_PROCESS[STDOUT]: # Compiler replay data is saved as: JAVAC_PROCESS[STDOUT]: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\replay_pid18280.log 2025-08-26 13:27:42,593 [ 7690] WARN - io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:444) at io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:386) at io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:585) at io.netty.channel.nio.NioIoHandler.processSelectedKeysPlain(NioIoHandler.java:530) at io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:503) at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:478) at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:203) at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:174) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1123) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) # # Compiler replay data is saved as: # C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2025.2\compile-server\replay_pid25952.log 这是什么报错
最新发布
08-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金士曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值