问题标签 [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.

0 投票
0 回答
414 浏览

java - Java NIO 2 身份验证

我正在使用 AsynchronousSocketChannel 和 AsynchronousServerSocketChannel 开发基于 Java NIO 2 的分布式系统。我的任务是在客户端尝试连接到服务器时进行身份验证。考虑使用 NIO 2(而不是任何其他 I/O 库),最好的方法是什么?我查看了 SSL,但它的实现假设使用特殊类型,例如 SSLServerSocket 等。有什么建议么?

0 投票
2 回答
33228 浏览

java - 相当于 InputStream 或 Reader 的 Files.readAllLines()?

我有一个文件,我一直在通过以下方法将其读入列表:

是否有任何不错的(单行)Java 7/8/nio2 方法可以使用可执行 Jar 中的文件实现相同的壮举(并且可能必须使用 InputStream 读取)?也许是一种通过类加载器打开 InputStream 的方法,然后以某种方式将其强制/转换/包装到 Path 对象中?还是 InputStream 或 Reader 的一些新子类,其中包含 File.readAllLines(...) 的等价物?

我知道我可以在半页代码中或通过一些外部库以传统方式完成它......但在我这样做之前,我想确保最新版本的 Java 不能“开箱即用” ”。

0 投票
1 回答
446 浏览

java - Java NIO2 并发完成处理程序

我正在编写 NIO2 服务器,我需要在 AsynchronousSocketChannel 上进行异步读取操作,这些操作中的每一个都包括读取一个整数,并进一步从相同的通道读取等于该整数的字节数。问题是,当我将两个或多个 CompletionHandler 连续放在通道上时(因为有多个读取操作的请求),并且这些处理程序中的第一个被触发,我在complete()第一个处理程序的方法中的进一步阅读代码无法正常工作,因为第二个当频道上有信息时,处理程序会立即被触发。我怎样才能阻止频道直到进一步阅读complete()没有Future事情完成?我不能使用 Future 因为我需要将处理程序放入套接字然后传递给其他任务。

这是 DataServerResponseHandler 类:

0 投票
3 回答
787 浏览

java - 为什么 java nio2 不能监听 udp 端口​​?

为什么“java.nio.channels.AsynchronousSocket”总是监听 tcp 端口?如果可以,我该如何使用它?他们是哪些班级?

0 投票
2 回答
2606 浏览

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()并且它运行良好:

0 投票
1 回答
18 浏览

nio2 - 检测文件中的新内容,仅提取新内容

这听起来像一个愚蠢的问题,也许我只是被任何东西阻止了......使用Java的新NIO2我可以完美地跟踪新文件的出现,我可以解析它们并将内容发送到某个地方。但是我没有胶水如何轻松跟踪更新并仅阅读新内容....

一如既往:任何提示表示赞赏

0 投票
1 回答
429 浏览

java - 如何使用 AsynchronousFileChannel 异步强制文件

Java NIO.2 中的AsynchronousFileChannelAPI 包含该void force(boolean)方法。

显然,这种方法是阻塞的,因为它只能在更改成功写入设备后返回。

我正在寻找一种方法来实现相同的目标,而不会阻塞线程。

如评论中所述,这相当于标准 C 库函数aio_fsync: http: //pubs.opengroup.org/onlinepubs/009695399/functions/aio_fsync.html

0 投票
0 回答
346 浏览

java - SSLEngine 握手完成后打印解码数据

SSL握手完成后如何获取解码数据?

目前它似乎只解密了一些数据。

重现步骤

  1. 保存并运行此代码
  2. 转到https://localhost:1500 - 您应该注意到请求的开头和结尾有如下内容:

?GET ... #$?+{???u7Y???

0 投票
0 回答
196 浏览

java - 使用 Files.newDirectoryStream 时的无限循环

我写了一些测试,在一些虚拟目录中压缩文件:

测试运行良好,直到我们的构建团队更改了下划线的 NAS 存储,这导致从目录流式传输并写入它时出现无限循环。

如果有人能解释这个问题,我会很高兴(我假设它与路径迭代器实现有关)。

0 投票
1 回答
170 浏览

scala - 自定义 NIO 文件系统不会通过 SBT 的测试任务加载

对于测试,我使用的是内存 NIOFileSystem实现(memoryfs)。我以前利用过它,它似乎可以通过例如 Maven 运行良好。

但是,现在,在 SBT 项目中,不可能初始化一个新的FileSystem.

这是重现问题的最小 SBT 配置:

这是一个测试:

运行sbt test将导致:

事情是这样的:这应该可以毫无问题地运行。我的问题是:为什么,以及如何解决它

浏览自定义 FS 提供程序文档,看起来 SBT 以某种方式破坏了类路径,但很难说为什么。

注意:有趣的是,IntelliJ IDEA 的测试运行器似乎可以顺利运行,问题仅出在命令行上(在“SBT 正确”中)。