问题标签 [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 2 身份验证
我正在使用 AsynchronousSocketChannel 和 AsynchronousServerSocketChannel 开发基于 Java NIO 2 的分布式系统。我的任务是在客户端尝试连接到服务器时进行身份验证。考虑使用 NIO 2(而不是任何其他 I/O 库),最好的方法是什么?我查看了 SSL,但它的实现假设使用特殊类型,例如 SSLServerSocket 等。有什么建议么?
java - 相当于 InputStream 或 Reader 的 Files.readAllLines()?
我有一个文件,我一直在通过以下方法将其读入列表:
是否有任何不错的(单行)Java 7/8/nio2 方法可以使用可执行 Jar 中的文件实现相同的壮举(并且可能必须使用 InputStream 读取)?也许是一种通过类加载器打开 InputStream 的方法,然后以某种方式将其强制/转换/包装到 Path 对象中?还是 InputStream 或 Reader 的一些新子类,其中包含 File.readAllLines(...) 的等价物?
我知道我可以在半页代码中或通过一些外部库以传统方式完成它......但在我这样做之前,我想确保最新版本的 Java 不能“开箱即用” ”。
java - Java NIO2 并发完成处理程序
我正在编写 NIO2 服务器,我需要在 AsynchronousSocketChannel 上进行异步读取操作,这些操作中的每一个都包括读取一个整数,并进一步从相同的通道读取等于该整数的字节数。问题是,当我将两个或多个 CompletionHandler 连续放在通道上时(因为有多个读取操作的请求),并且这些处理程序中的第一个被触发,我在complete()
第一个处理程序的方法中的进一步阅读代码无法正常工作,因为第二个当频道上有信息时,处理程序会立即被触发。我怎样才能阻止频道直到进一步阅读complete()
没有Future
事情完成?我不能使用 Future 因为我需要将处理程序放入套接字然后传递给其他任务。
这是 DataServerResponseHandler 类:
java - 为什么 java nio2 不能监听 udp 端口?
为什么“java.nio.channels.AsynchronousSocket”总是监听 tcp 端口?如果可以,我该如何使用它?他们是哪些班级?
java - 无法从类路径获取文件(使用 NIO2)
我想从文件的内容创建一个字符串。根据这个答案,我这样做:
(据我了解,这是一条新的 NIO2 API 路径,它是 Java 7 的一部分。)
stringTemplatePath参数是文件的名称(“template.html”)。我检查了这个文件的位置。它在类路径中:../classes /template.html
调用此函数后,我得到一个异常:
也许我以错误的方式发送文件名参数?我尝试发送此修改:"file:///template.html"和"classpath:template.html",但没有帮助。
我也试过这段代码:
我调用了这个函数,我得到了以下异常:
所以,类路径中的文件,因为new File(stringTemplatePath)可以创建一个文件。但是这个文件的路径很奇怪(/opt/repo/versions/8.0.9/temp/template.html)。我使用 Jelastic 作为主机(环境:Java 8、Tomcat 8),如果它是 metter 的话。
更新:最终工作解决方案:
IOUtils是来自 Apache IO Commons 的 util 类。
重要提示:
如果我只是从class调用.getResourceAsStream(...),将找不到资源文件并且方法将返回null:
因此,我在调用 .getResourceAsStream(... )之前调用了 .getClassLoader()并且它运行良好:
nio2 - 检测文件中的新内容,仅提取新内容
这听起来像一个愚蠢的问题,也许我只是被任何东西阻止了......使用Java的新NIO2我可以完美地跟踪新文件的出现,我可以解析它们并将内容发送到某个地方。但是我没有胶水如何轻松跟踪更新并仅阅读新内容....
一如既往:任何提示表示赞赏
java - 如何使用 AsynchronousFileChannel 异步强制文件
Java NIO.2 中的AsynchronousFileChannel
API 包含该void force(boolean)
方法。
显然,这种方法是阻塞的,因为它只能在更改成功写入设备后返回。
我正在寻找一种方法来实现相同的目标,而不会阻塞线程。
如评论中所述,这相当于标准 C 库函数aio_fsync
: http: //pubs.opengroup.org/onlinepubs/009695399/functions/aio_fsync.html
java - SSLEngine 握手完成后打印解码数据
SSL握手完成后如何获取解码数据?
目前它似乎只解密了一些数据。
重现步骤
- 保存并运行此代码
- 转到https://localhost:1500 - 您应该注意到请求的开头和结尾有如下内容:
?GET ... #$?+{???u7Y???
java - 使用 Files.newDirectoryStream 时的无限循环
我写了一些测试,在一些虚拟目录中压缩文件:
测试运行良好,直到我们的构建团队更改了下划线的 NAS 存储,这导致从目录流式传输并写入它时出现无限循环。
如果有人能解释这个问题,我会很高兴(我假设它与路径迭代器实现有关)。
scala - 自定义 NIO 文件系统不会通过 SBT 的测试任务加载
对于测试,我使用的是内存 NIOFileSystem
实现(memoryfs)。我以前利用过它,它似乎可以通过例如 Maven 运行良好。
但是,现在,在 SBT 项目中,不可能初始化一个新的FileSystem
.
这是重现问题的最小 SBT 配置:
这是一个测试:
运行sbt test
将导致:
事情是这样的:这应该可以毫无问题地运行。我的问题是:为什么,以及如何解决它?
浏览自定义 FS 提供程序文档,看起来 SBT 以某种方式破坏了类路径,但很难说为什么。
注意:有趣的是,IntelliJ IDEA 的测试运行器似乎可以顺利运行,问题仅出在命令行上(在“SBT 正确”中)。