问题标签 [nio2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java.nio.FileSystem包装Commons VFS的实现?
我知道存在允许连接到不同的Apache Commons VFSFileSystem
,其中FileSystem
可能是 FTP、HTTP、SFTP、Zip 文件或简单的本地文件系统。
我想知道,经过一些搜索(大多数在 Google 和 VFS 网站上)没有结果,是否有一个java.nio.FileSystem
可以包装 VFS 的实现。
我的用例如下:我有一个个人项目,我需要读取文件内容或列出目录内容,以对这些内容做一些事情(例如索引等)。
我目前java.nio.Path
用来表示我正在阅读的文件的路径,我想稍后添加一个功能来使用 SSH 连接(我不需要这个“现在”,但这个问题仍然让我感兴趣)。
java - java.nio.file.FileSystemException: /proc: 打开的文件太多
我正在使用此代码读取 proc 文件系统中的所有文件夹
一段时间后,我收到此错误
看起来这个循环正在打开文件而不关闭它们。每次循环运行后有什么方法可以关闭文件吗?
java - 嵌套档案的有效 java.net.URI 是否存在?
使用URI scheme可以读取基本上重命名为.zip文件(.ear、.war、.jar等)的存档格式,尽管可能不明智。jar:
例如,以下代码在uri
变量计算为单个顶级存档时运行良好,例如当uri
等于jar:file:///Users/justingarrick/Desktop/test/my_war.war!/
但是,当 URI 包含嵌套档案时, getFileSystem
andnewFileSystem
调用会失败IllegalArgumentException
,例如当uri
equals jar:jar:file:///Users/justingarrick/Desktop/test/my_war.war!/some_jar.jar!/
(.war内的.jar)时。
嵌套存档文件是否有有效的java.net.URI
方案?
java - AsynchronousFileChannel 写入失败
我正在尝试使用 AsynchronousFileChannel.write 将图像写入文件:
我经常收到以下异常:
我使用 Oracle JDK 8u25 在 Linux 上运行此代码。这是在 Windows 上发生的异常少得多。而且我还注意到,当我在调试模式下运行代码时,遍历每一行代码,这种情况很少发生。
当我不使用 CompletionHandler,而是使用:
我没有得到例外。
这可能是什么原因造成的?
java - IO 性能:Selector (NIO) vs AsynchronousChannel(NIO.2)
奇怪的是,我无法在 Google 中找到关于 NIO.2 异步 IO 性能与通过 java.nio.channels.Selector 使用 NIO 的多路复用 IO 的明确答案。
所以,我的问题是:NIO.2 AsynchronousChannel 的性能是否比 NIO Selector 更好?当然,我对不同负载配置文件下的服务器端感兴趣 - 同时连接数/平均连接寿命/流量。
我能找到的唯一信息是 Windows IOCP 略好于 Windows select。
java - 我应该关闭用 java.nio.file.Files.newInputStream 创建的流吗?
在流教程中,没有提到关闭从Files.newInputStream( path )
. 只有一些晦涩的:
返回的流是否可异步关闭和/或可中断是高度特定于文件系统提供程序的,因此未指定。
在这种情况下,什么是“异步”?如果我明确关闭流或另一个线程异步关闭流?
java - java - 如何在java上巧妙地提取子路径以解释root和没有root文件夹
我有一个 Path 对象和一个 String 对象,Path 对象代表文件名表示的起始路径的一部分
例如,对于文件名 /Music/Beatles/Help.mp3,Path 对象可能是
这个简单的方法返回路径的一部分减去基本文件夹
IE
但是虽然很简单,但它相当混乱,因为我必须考虑这样一个事实,即如果基本文件夹是根文件夹,它以“/”结尾(在 unix 上)但不是没有根路径。
我确定有一个更整洁的方法,但我看不到它。
java - NIO 的文件系统和路径与默认文件系统不一致
我正在创建一个文件系统来浏览 jar,以防对我的资源的访问是在一个 jar 中。
然后我注意到,在创建一个新的 FileSystem 时,它实际上在使用 Paths NIO 类时注册为默认文件系统。
但 Filesystems.getDefaultSystem 不断返回硬盘常规。
为什么这种行为不一致且如此透明?当询问相对路径为 myResources/myResource.txt 时,如何询问 Paths 实际使用的文件系统?
java - 将文件系统条目加载到内存映射文件 (NIO2) 的最快和最干净的方法
我想将一个 zip/jar 条目提取到内存中,这样我就可以关闭 zip 流/FS 并将文件保存在 JVM 中,而无需处理临时副本。
一种选择是使用 Files.readAllLines(Path pathToZipFSentry),但它似乎使用了缓冲阅读器,这可能会对大文件造成很多不利影响。
所以我正在研究如何在 Java NIO2 中做到这一点,似乎方法是通过 FileChannels 以 MappedByteBuffer 结束。
我不能使用 RandomAccessFile.getChannel(),因为我来自虚拟文件系统的路径,而不是文字文件。我不能使用 Files.newByteChannel(rscPath, StandardOpenOption.READ) 然后是 (fileChannel.)map() 因为它返回的 SeekableByteChannel 在界面中没有地图...
你是通过 Java8 中的 Path(s)/File(s)/FileSystem(s)/FileChannel(s) 实现的任何一个/两个高级衬里吗?我希望像 InMemoryFile file = Files.loadIntoMem(Path) 这样的东西我已经 1 小时寻找关闭选项...
java - 如何使用 AsynchronousServerSocketChannel 绑定多个端口?
我正在尝试使用异步通信模型创建服务器并希望绑定多个端口,但是当我调用一个以上的 bind 方法时,它会引发错误“AlreadyBoundException”。有没有办法做到这一点?这是我的代码