问题标签 [java.nio.file]
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 - Files.getLastModifiedTime() 是否泄漏内存?
我遇到了一个错误,我们的一个服务器应用程序几乎每秒使用越来越多的内存,我设法过滤掉一个仍然显示该行为的简短示例:
在 Windows 8.1 和 Java 8u20 上运行。
通过 VisualVM,我观察到最大堆大小没有增长,并且堆本身不断增加。同时我在 Windows 任务管理器中观察到生成的 java.exe 进程每秒继续使用(保留)更多内存。
有趣的是,当我在 VisualVM 中执行 GC时,所有使用的堆内存都被重置为几乎为零,并且 java.exe 进程的使用内存不会像预期的那样缩小,因为它被认为是保留的。
但是,在 GC 完成后,内存使用量仍然每秒增加,而现在肯定有足够的可用堆空间。
元空间也不受影响。
对我来说,这真的很难闻,看起来 JVM 有内存泄漏。
谁能帮我解释一下这里发生了什么?
java - Files.createSymbolicLink() 将 FileAttribute 数组作为参数;在任何操作系统上都有意义吗?
的原型Files.createSymbolicLink()
是:
嗯……为什么?
符号链接只不过是一个 inode,其内容是一个指向...的字符串。目标甚至可能根本无效。
出于好奇,我尝试了这个(是的,它以 root 身份运行,但这是故意的):
嗯,我有点期待。
我知道符号链接的权限在哪里很重要的唯一情况是在 Linux 的 /proc/*/fd/ 中,因为符号链接的权限与打开文件描述符的权限相匹配。但这是系统生成的符号链接,与用户可以生成的完全不同。
是否存在任何操作系统,其中符号链接的权限实际上会以任何方式、形状或形式影响符号链接和/或其目标的行为?
编辑:好吧,我可以更改符号链接的所有者,chown
但是...再次,有什么意义?
java - 使用 java.nio.files 选择 EOL
如何\n
使用Unix 选择行尾java.nio.file.Files.write
?可能吗?我没有找到任何要选择的选项或常量。这是我的方法
java - Oracle的JDK zip文件系统中的错误,您如何编写SSCCE来重现它?
此错误存在于最新的 JDK 1.7 和 1.8 版本(7u72、8u25)中。必需:杰克逊数据绑定 2.5.0。在 Linux x86_64(准确地说是 Ubuntu 14.10)上测试。
代码:
这会产生一个无效的 zip 文件:
我最初在杰克逊的问题跟踪器上打开了这个错误,即使它真的不是这里的罪魁祸首,并且找到了解决它的解决方案:JsonGenerator.Feature.AUTO_CLOSE_SOURCE
在ObjectMapper
. 默认情况下启用的此选项告诉映射器关闭流。
虽然我想向 Oracle 打开错误,但我首先希望能够编写一个 SSCCE,但我不能。我试图关闭流两次(因为它在示例中关闭了两次),而不是使用 try-with-resources 语句等......无济于事。
你能想出一个SSCCE来解决这个问题吗?
java - MappedByteBuffer 抛出 java.nio.BufferOverflowException
我正在学习 java nio,我正在使用 MappedByteBuffer 和 ExecutorService 异步复制文件。我的问题是 MappedByteBuffer.put() 方法抛出 java.nio.BufferOverflowException。但在我的调试中,我没有复制到目标文件的上方位置。这是我用来创建文件的新副本的代码部分:
例外是:
java - 如果服务器响应超时,使用带有 UNC 路径的 Java File.delete() 会得到什么
我有一个相当理论的问题要问你。
如果使用 UNC 路径调用 java.io.File#delete() 会发生什么,即 new File("\192.168.10.10\MyShare\myFile.txt").delete() 和底层 SMB_COM_DELETE 请求到达 SMB 服务器但SMB_COM_DELETE_RESPONSE 由于某种原因(网络故障、防火墙或其他)没有返回调用者?我希望java调用在几秒钟后超时,但是......你知道有多少吗?你知道一个人是否会得到某种例外吗?这是可配置的吗?如果我使用 Files.delete(),会有什么不同吗?
除了支持它之外,我在 java.io.File javadoc 中找不到 UNC 表示法的任何内容。
如果有人能回答这个问题,我会很高兴
谢谢!
java - 如果 java 中已经存在,则移动目录时出错
我正在尝试强制移动目录,这意味着如果已经存在,则无需询问即可覆盖。
代码 :
错误输出:
如果文件夹不存在于目标路径上,则此代码有效,但如果已存在则失败。即使目标路径上存在空文件夹,此代码也不起作用。
在此调用选项中,我使用的不适用于文件夹。此代码已针对文件进行了测试,它也适用于已存在的文件。
但我想移动/覆盖文件夹。
java - java.nio中绝对路径的解析
关于Path.resolve(Path other)
索赔的文件
如果
other
参数是绝对路径,则此方法通常会返回other
。
我不解:为什么?是否有一个真实的用例证明此功能很少?
我有一个反例。假设我们要将一个文件从一个文件复制FileSystem
到另一个文件,而且我们想保留它的路径字符串。例如,如果原始文件是/foo/bar/readme.txt at fs1
,则副本应是/foo/bar/readme.txt at fs2
。一个明显的灵魂是:
当然,它不起作用,因为dest
与fs1
而不是关联fs2
。但是上面的代码看起来非常一致!也许,这是我对Path
s 及其分辨率的理解不足?请帮助我度过这个难关。
java - 使用 JIMFS 创建虚拟文件系统
我想使用 Google 的 JIMFS 来创建一个用于测试目的的虚拟文件系统。不过,我很难开始。
我看了这个教程:http ://www.hascode.com/2015/03/creating-in-memory-file-systems-with-googles-jimfs/
但是,当我创建文件系统时,它实际上是在现有文件系统中创建的,即我不能这样做:
因为我被拒绝访问。
我错过了什么吗?
目前,我的代码如下所示:
测试类:
某处的Java类:
但是,我创建了一个单独的类来测试 JIMFS,这里目录的创建没有失败,但是我不能像这样创建一个新文件:
我究竟做错了什么?
java - 为什么“Path.startsWith”行为与“String.startsWith”操作不同——即使是“Path.getFilename”
我正在使用 Java 版本 1.8.0_31。
我正在尝试使用 FileVisitor 接口递归访问目录树。程序应打印C:/books
文件名以“Ver”开头的所有文件的名称。该目录C:/books
有两个以“Ver”开头的文件Version.yxy
和Version1.txt
. 我尝试使用file.getFileName().startsWith("Ver")
,但这返回错误。
我错过了什么吗?这是我的代码:
上述代码的输出是: