问题标签 [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 - 为什么 NIO.2 FileVisitor 类型是泛型的?
我正在对 Java NIO.2 及其文件操作进行一些研究,目前我正在使用文件树遍历函数和类。
NIO.2 FileVisitor
API 很棒,可惜最近才在 Java SE 中添加这样的东西,而不是十年前。然而,有一点让我有点困扰:使FileVisitor
接口通用的意义何在?
网上的每一个例子都展示了如何使用它,Files.walkFileTree()
这意味着我们正在使用FileVisitor<Path>
类型。但我只是看不到这个接口对Path
. 好吧,也许可以FileVisitor
用来遍历其他类型的树(内存中的树?),但这感觉不对:这个接口和相关类具有与文件语义相关的非常具体的名称,以及FileVisitor
's 方法扔IOException
s.
FileVisitor
那么,参数化类型有什么原因吗?
java - Java 7 zipfs:文件也是文件夹
我一直在使用 Java 7 的 ZipFS 支持。
https://gist.github.com/stain/5591420
显示行为,我觉得有点奇怪。基本上,您可以创建一个 ZIP 文件系统,创建一个具有给定名称的文件,然后还创建一个具有相同名称的文件夹。
这样做的原因似乎是在内部文件夹在其名称后面附加了“/” - 但是这个新名称没有返回,因此您最终会遇到一个奇怪的情况,即 Files.isDirectory() 在成功完成文件后立即返回 false。创建目录()。
因此,只要您有“/”作为后缀,您甚至可以同时使用两者,如果您对根目录进行目录列表,这就是它们的列出方式。
现在 ZIP 格式本身允许这样做,因为它只处理 ZIP 文件中的条目(甚至允许多个具有相同名称的条目),但是正常使用“文件系统”通常不允许多个具有相同名称的条目;当我尝试创建文件夹两次时可以看出。
生成的 ZIP 文件可以用 infozip、7Zip 和 Windows 8 正确浏览;但是尝试解压缩显然会失败,因为本机文件系统不支持这种二元性。
那么这是一个功能,错误还是介于两者之间的东西?
java - 如何使用 Nio2 读取大文件
我正在尝试读取一个到目前为止大约有 30 万行的文本文件。
我读得怎么样?
我正在使用 java.io.BufferedReader 阅读
这是一个代表我的方法的小代码片段。
我曾尝试使用 NIO2 以下情况
它导致了以下异常
首先,我的方法对吗?
NIO2、apache FileUtils 或任何其他 API 中是否有任何有效且快速的方法可以更快地读取文件,从而更快地改善我的文件读取过程。我可以读取前 1000 行之类的行集
br.readFirst(1000);
,
但不逐行读取或按照我的逻辑进行迭代吗?
java - java.nio DatagramChannel 非阻塞模式.. 还得阻塞?
我一直在研究 java.nio 的异步功能,到目前为止我是这个AsynchronousByteChannel
类的粉丝,因为它让我可以为每个读取或写入操作提供完成回调。这很适合 scala 的Future
类。
现在我正在尝试与DatagramChannel
异步交互。(出于好奇,我正在尝试实现自己的 torrent 客户端,并且一些跟踪器使用 UDP。)
我现在的目标是找到一种方法来适应其原始签名的当前read
和方法...write
到一个面向 scala-futures 的签名,比如......
查看 API 并在线查找示例,并找到了进入Selector类的方法。据我所知,这就是我需要用来制作DatagramChannel
“非阻塞”的方法,但我看到了三种似乎相关的方法:
因此,看来我对“非阻塞”的选择是阻塞(wtf?)或占用一个运行繁忙循环的线程,该循环重复调用其中一个选择方法。这是我的问题。
有没有办法使用 a 实现真正的非阻塞 IO DatagramChannel
?如果不是,处理(阅读“最小化”)实际阻塞的最佳方法是什么?
java - 使用 Struts 2 上传后如何删除文件?
我可以使用 Struts2 上传文件,但我想删除指定的目录但我不知道如何删除文件。
这是我的代码:
java-7 - 如何将具有属性/权限的目录从一个位置复制到另一个位置?
我看到很多用于将目录及其内容从一个位置复制到另一个位置的示例,Files.walkFileTree()
但它们没有考虑到目录的文件属性和权限。这意味着,它们只是在Files.createDirectories()
没有任何属性或权限的情况下调用。
如何使用 Java7 核心类将目录(及其内容)从一个位置复制到另一个位置而不丢失文件属性或权限?
java - Java 7 NIO.2 Files.getLastModifiedTime 时区
我正在编写一个需要确定文件/目录上次修改时间的程序。我想使用 Joda Time 来处理这个时间,并且我正在使用 Java 7 NIO.2 类Files
来获取文件的最后修改时间。它的getLastModifiedTime()
方法返回一个FileTime
类的实例,该实例具有方便的方法toMillis()
,我将其结果传递给 Joda TimeDateTime
类构造函数:
但是,我觉得我做错了,因为DateTime(long)
构造函数明确提到该DateTime
实例将使用默认时区创建。FileTime
但是,文档没有在任何地方提及其时区。我查看了FileTime
代码;它似乎很简单,它的toString()
方法表明它正在使用 UTC 时区(它Calendar
在 UTC 时区中创建一个并直接设置它的毫秒数)。
那么,FileTime
使用UTC还是当地时间?FileTime
转换为的正确方法是DateTime
什么?
java - 使用 NIO2 API 时摆脱检查异常
目前,我在 Guava API 的帮助下使用以下代码从类路径加载属性文件:
我决定尝试 Java7SE 中引入的新 NIO2 API 并删除任何 Guava API 调用,因此我将代码转换为以下内容:
URL
但是修改后的代码在和之间发生转换的那一行会抛出一个检查异常URI
。有什么办法可以摆脱它。例如,我可以得到一个Path
给定URL
的实例吗?
PS 我知道修改后的代码在语义上与原始代码不同 -如果找不到资源,则Guava 会getResource
抛出,在这种情况下,Java 会返回。IllegalArgumentException
getResource
null
java - jdk7 watch service API中,什么时候会抛出OVERFLOW事件?
溢出的文档指出:
OVERFLOW – 表示事件可能已丢失或丢弃。
它没有说在什么情况下我应该期望事件丢失或丢弃?起初我认为这将是非常快速地写入大量文件到文件夹的结果。我创建了几千个大小为零的文件,并将它们移动到受监控的目录中。没有溢出。
我错过了什么?
java - Java 7 NIO watchservice vs jpathwatch
我正在工作的项目一直在使用 Java 6 和 jpathwatch (.95),现在正在升级到 Java 7。目前在 Windows 7 和 2008 Server 上。我正在重构代码区域以使用新的 Java 7 NIO,并且相对简单——甚至使用 NIO.2 来替换 jpathwatch。但是,我们代码的文件监视区域开始未能通过单元测试。似乎 Java 7 NIO 不会接收到其他机器的 UNC 路径中的更改 -
为了测试,我实现了 Java NIO 教程站点http://docs.oracle.com/javase/tutorial/essential/io/fileio.html中的代码,然后在 jpathwwatch 导入中创建了一个重复的类交换,而不是 Java NIO进口。jpathwatch 适用于 UNC 路径,但 Java NIO 不适用。它似乎注册甚至返回该位置的初始事件键:(示例输出)
但从不承认任何进一步的变化。
jpathwatch 注册并报告目录和文件事件(尽管它不会在注册后立即报告初始事件)。
尽管在 jpathwatch 讨论中看到不支持网络观看 - 请注意 Uwe Pachler 对 UNC 路径的响应 - http://sourceforge.net/p/jpathwatch/discussion/888207/thread/8ea778de/?limit=25# 0037
有没有人看过 UNC 路径和 Java 7 NIO.2?任何其他或更新的解决方案?
谢谢,
-mjash