问题标签 [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 回答
4686 浏览

java - 如何检查操作系统是否符合 POSIX

我正在编写一个跨平台应用程序,该应用程序创建临时文件并将它们复制到另一个位置,每个人都需要读取它们。(默认情况下,只有所有者对临时文件具有读取权限。)我尝试使用 POSIX 文件权限,如下所示:

但这会导致在非 POSIX 平台上出现异常:

我想添加一个简单的检查,以便我可以在必要时使用文件权限,而不会破坏与其他平台的兼容性。

0 投票
4 回答
2338 浏览

java - 是否有一种简单的、仅 NIO2 的方法可以将 URL 转换为路径

我想从获得的 URL 中复制目录(包括内容)

它返回jar:file:/D:/../some.jar!/someparentfile:/D:/../someparent

我想到了一个FileSystem(用于 jar intern dirs)并递归复制Files.walkFileTree(..).

是否可以修改jar:file:/D:/../some.jar!/folder为仅获得 FileSystem NIO2?

0 投票
2 回答
13217 浏览

java - DirectoryStream.Filter 示例,用于列出基于特定日期/时间的文件

例如,我正在尝试调查一个DirecoryStream.Filter示例,newDirectoryStream以列出一个目录(及其所有子目录)下超过 60 天的所有文件。

在上面的代码中,应该是DirectoryStream.filter什么?
这将是一个很大的帮助,因为我在一个项目中试图删除早于某个时间戳的文件并且 pre-java 1.7File.listFiles()只是挂起。

可以Files.walkFileTree()提供一个选项吗?

0 投票
1 回答
1340 浏览

java - DatagramChannel、阻塞模式和cpu

我得到以下代码片段:

此代码位于 a 中Callable,我创建了最多 12 个Callables(因此 12 个线程)来检索来自 12 个不同端口的具有不同数据的多播数据包。它只读取每 3-8 秒在网络上广播的信息。

当连续池化 12 个端口时(等待信息、获取信息等),它会占用我的一个 CPU 的 100%。

java.nio.channels.DatagramChannel#receive()使用JVisualVM分析执行,我看到 90% 的执行时间都用于com.sun.nio.ch.DatagramChannelImpl#receiveIntoBuffer().

  1. 我不太明白为什么阻塞模式会占用这么多CPU。

  2. 我已经阅读了一些关于使用Selectors 而不是阻塞模式的文章,但我真的不明白为什么while (true)withSelector会比阻塞通道消耗更少。

0 投票
1 回答
5696 浏览

java - 来自 Java NIO2 中的临时文件的 Files.copy 上的 AccessDeniedException

我已经习惯了 Java 7 和新Files类。

我正在编写一个小型应用程序,它在某些时候必须替换文件的内容。如果出现问题,我使用了一个临时文件来避免擦除目标文件。AccessDeniedException但是,在执行实际副本时,我总是得到一个。

这是我的代码:

getCurrentConfigFile()处理目标文件路径创建:

当我执行代码时,它是通过.bat脚本进行的,并且我在标准命令提示符或提升中都得到了错误。目标文件位于 中C:\temp\tests,这是我使用同一个 Windows 用户创建的目录。

似乎问题在于从临时文件中读取,因为直接写入目标是可行的。我接下来应该看哪里?

0 投票
1 回答
232 浏览

java - Nio2 WatchService

I'm learning about file watchers in nio2, and an example file had a Map variable where they mapped files to watch keys, and had the following code:

According to this example, i'm led to believe that the watch service occasionally might give me a false-positive (a key that's not mapped to a file the application is watching), but in the Oracle Reference they make no such check. I'm now unsure whether i really need have the dictionary or not. Can anyone with experience with nio2 shed some light on this?

0 投票
1 回答
1541 浏览

linux - 使用 Java NIO 2 的符号链接级别太多 - Paths.get(workFolder, timestamp);

我正在使用 Java NIO2 得到“太多级别的符号链接”:- 这是在 Unix 上运行的。任何想法都会有很大帮助。谢谢。

在我调用的代码深处

并且在流程中的某个时刻 - 我正在尝试按照以下方法获取当前文件夹..

但我得到以下例外..

0 投票
0 回答
440 浏览

java - 在已挂载的 CIFS 共享中设置文件的权限 - NIO.2

我试图在创建时添加一组属性,如下例所示。此代码在已挂载的 CIFS 共享中使用特定权限(“rw-rw-r--”)在 POSIX 文件系统上创建一个新文件。

运行简单代码后,文件已创建,但它的权限看起来

而不是我需要的(查看代码'rw-rw-r--')

有人可以帮我解决这个问题吗?

0 投票
2 回答
313 浏览

java - NIO.2 异步通道编码指南

例如,我想将 100500 字节读入一个数组:

这里的 LambdaAdapter 是一个简单的包装器,它将 CompletionHandler 转换为具有三个参数的函数式接口。

反正。偏移量可以放在'attachment'参数中,lambda可以预先声明并作为字段重用。然而,生成的代码总是丑陋的丑陋的。

即使对于这样简单的任务,我也无法编写可接受的解决方案 - 对于读取与写入交错并包装在复杂逻辑中的复杂协议,它会是什么样子?

有谁知道处理异步 API 的合适方法?如果您认为 Scala 可以在这里拯救世界,请随意使用它。

0 投票
1 回答
363 浏览

java - Java NIO 2 DirectoryStream 列表在文件更改时更改

在目录中列出文件时,我注意到一个奇怪的行为。我的情况是我有一个 txt 文件列表,我保存在数据库中,并且对应于这些数据文件有 xml 文件,其中包含每个 txt 的一些标签,这些标签与它们在 db 中的元属性相关联。

当我从目录中列出文件并读取 xml 文件时,流如何更改并再次列出已添加到 db 的文件。文件名在我的数据库中是 id 并且是唯一的,重新列出它们违反了主键约束。

我想知道为什么listing会受到干扰?

现在对于某些文件,它运行良好,但随后一些已列出的文件又回来了。就像 1.txt 已处理并保存在 db 中,但在稍后的循环中再次列出。