问题标签 [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 投票
1 回答
1620 浏览

java - Files.createTempDirectory("") 抛出 NullPointerException

当我打电话时,Files.createTempDirectory("")我得到以下异常:

Files.createTempDirectory("")我发现的使用示例都没有在任何FileAttributes 中传递。我已经尝试过,Files.createTempDirectory("", new FileAttribute<?>[] { });但它也没有帮助。

我在 Windows 7 系统上使用 32 位 JDK 7。我不是机器上的本地管理员。

有没有人遇到过这个?

更新 1:

Files.createTempFile(this.tempDir.toPath(), "tmpFile", "");似乎有同样的问题。

作为一种解决方法,我已移至com.google.common.io.Files.createTempDir().

0 投票
0 回答
166 浏览

java - Java NIO2 Files.copy() 与 Bash cp - 性能比较

我有一个 Java 程序,它由 Bash 脚本通过命令行启动,而 cron 又以不同的时间间隔调用它。

这个程序执行了几个操作,第一个是可能大量或多或少的大文件的副本。(从 10000 个 30 KB 的文件到 1 个 1 GB 的大文件,但这些都是边缘情况。)

我很好奇应该如何完成这一步以确保性能(如速度)。

我可以使用 Bash 的cp函数或 Java 7 的Files.copy(). 我将运行自己的测试,但我想知道在决定实施之前是否有人可以考虑任何比较数据?

0 投票
1 回答
296 浏览

java - 如何使用 NIO 获取有关 Windows 快捷方式来源的信息?

请看这段代码片段:

使用以下 Windows 操作创建了名为 followLink.lnk 的文件:

鼠标右键单击文件->创建快捷方式

最后两行输出相同,并且有关快捷方式的信息。nio2 中是否有方法获取有关源的信息,指向快捷方式?

0 投票
1 回答
1700 浏览

java - 为什么我在根文件夹下按掩码搜索文件时看到 NullPointerException?(Windows)

我调查了 java nio2 的可能性。

我知道我可以使用FileVisitor界面搜索文件。为了实现这个功能,我使用 glob 模式。

我的示例代码:

访客界面实现:

主要方法:

main 方法的这种变体可以正常工作,但是如果我更改:

我看到以下堆栈跟踪:

我不是这个问题的原因。

如何解决?

0 投票
1 回答
1182 浏览

java - 服务器-客户端中的异步读取:单独的客户端消息

我正在使用AsynchronousServerSocketChannel. 出于测试目的,我创建了一个小型客户端原型,它发送两条消息,"hi"然后"stackoverflow"断开连接。在服务器端,我读取到达的消息并将它们打印到标准输出。当客户端执行时,我期望收到:

问题是,有时当服务器调用读取回调时两条消息都已经到达,所以我得到

反而。

问题是,是否可以在服务器端确保消息单独到达,如果可以,如何做到这一点?

这是我CompletionHandler处理客户端连接的原型:

ByteBuffer转换String

这是一个测试客户端原型:

0 投票
3 回答
10758 浏览

java - 合并大文件而不将整个文件加载到内存中?

我想将包含字符串的大文件合并到一个文件中并尝试使用 nio2。我不想将整个文件加载到内存中,所以我用 BufferedReader 进行了尝试:

我用这个试过了,这行得通,但是,字符串的格式(例如,新行等不会复制到合并文件中):

如何在不将整个文件加载到内存的情况下将大文件与 NIO2 合并?

0 投票
2 回答
7859 浏览

java - 按最大行拆分非常大的文本文件

我想将一个包含字符串的大文件拆分为一组新的(较小的)文件并尝试使用 nio2。

我不想将整个文件加载到内存中,所以我用 BufferedReader 进行了尝试。

较小的文本文件应受文本行数的限制。

该解决方案有效,但是我想问是否有人知道使用 java 8(可能是带有 stream()-api 的 lamdas?)和 nio2 的性能更好的解决方案:

0 投票
0 回答
325 浏览

java - 如何提高 java nio2 的网络性能?

我阅读了nio2的api,并找到了这些改进方法:

这些取决于给定的情况:

点对点还有其他方法吗?

0 投票
1 回答
364 浏览

java - 没有在我的客户中获得 OP_READ

我是 NIO 和 NIO2 的新手。我一直在使用 Echo 服务器示例代码,它可以完美运行。我开始写一个类似的客户端。我的目标是让多个客户端套接字连接在一个主线程上运行。

我确实得到了 OP_CONNECT,然后选择器没有返回并从以下超时:while(Selector.select(10000)>0) { .... }

如果我忽略选择器并开始使用 socketChannel.read(...) 读取数据,我可以读取数据。因此,数据已准备好被读取,但我只是没有让 Selector.select(10000) 返回一些键。

这是完整的源代码,我真的很感激任何帮助:

谢谢,

0 投票
1 回答
1450 浏览

java - java nio SocketChannel.read 不返回 -1 表示流结束

我正在编写一个代码,它使用 NIO/Selector 进行网页抓取。有用。我确实得到了 OP_CONNECT,然后我发送了 GET 请求,并取回了整个 html 页面。但是,在那之后,我没有得到 -1 就知道它已经完成了。我确实看到了,这意味着整个页面已经发送,但是 SocketChannel.read 没有返回 -1 来指示流的结束。非常感谢任何帮助!

这是整个示例代码: