38得票2回答
java.io.File和java.nio.Files哪个更适合新代码?

在SO回答问题时,某用户指出不应在新代码中使用java.io.File,而应该使用新的java.nio.Files代替;他引用了这篇文章。我已经使用Java进行开发几年了,但之前从未听过这个观点;自从读了他的帖子后,我一直在搜索,并没有找到很多其他证实这一点的来源,并且我个人认为,文章中提出的...

36得票1回答
Java nio: 如何向绝对路径添加扩展名?

这似乎应该是一件很简单的事情,但我似乎找不到一个优雅的解决方案,而不需要转换为File。 给定一个Path。Path path = Paths.get("/a/b/foo") 如何获取路径/a/b/foo.bar?无论原始路径是相对路径还是绝对路径,subpath都将返回相对路径。 我更...

34得票3回答
用于URL的java.nio.file.Path?

Java7自带了一个用于本地文件的默认Path实现。 是否有适用于URL的Path实现? 例如,我应该能够使用以下代码复制远程资源:Path remote = Paths.get(new URI("http://www.example.com/foo/bar.html")); Path lo...

33得票8回答
在Java中对一个已排序(内存映射?)文件进行二分查找

我正在尝试将一个Perl程序移植到Java,并在学习Java的过程中进行这个工作。原始程序的核心组件是一个Perl模块,它使用二进制搜索在一个超过500 GB的排序文本文件中进行字符串前缀查找(基本上,"seek"到文件中间的字节偏移量,回溯到最近的换行符,将行前缀与搜索字符串进行比较,"se...

33得票4回答
为什么ByteBuffer.allocate()和ByteBuffer.allocateDirect()之间存在奇怪的性能曲线差异?

我正在处理一些SocketChannel-to-SocketChannel代码,最好使用直接的字节缓冲区 -- 长时间存活且大(每个连接数十到数百兆字节)。在使用FileChannel并确定确切的循环结构时,我对ByteBuffer.allocate()和ByteBuffer.allocate...

33得票5回答
Java WatchService在监视映射驱动器时未生成事件

我实现了一个文件监视器,但我注意到Java NIO文件监视器不会为映射驱动器上正在复制的文件生成事件。例如,我在Unix上运行文件监视器来监视本地目录(/sharedfolder),该目录在Windows上映射为(H:\),然后我将文件放入此目录(H:\),但文件监视器没有生成任何事件。现在,...

32得票7回答
ByteBuffer.flip()和ByteBuffer.rewind()的区别

我知道flip()会将当前的缓冲区位置设置为0,并将限制设置为先前的缓冲区位置,而rewind()只是将当前的缓冲区位置设置为0。 在下面的代码中,无论我使用rewind()还是flip(),都会得到相同的结果。byte b = 127; bb.put(b); bb.rewind();//or...

31得票3回答
使用Java nio创建子目录和文件

我将创建一个简单的程序,尝试从磁盘中读取“conf/conf.xml”文件,但如果该文件或目录不存在,则会创建它们。 我可以使用以下代码实现: // create subdirectory path Path confDir = Paths.get("./conf"); ...

31得票1回答
在Netty 4.0中创建ByteBuf

我有两个简单的问题,但是通过阅读文档无法解决: 我有一个 byte[] 如何将其转换为 ByteBuf? 我有一个 NIO ByteBuffer 如何将其转换为 ByteBuf?

30得票6回答
Java的ByteBuffer的深拷贝duplicate()方法

java.nio.ByteBuffer#duplicate()返回一个新的字节缓冲区,该缓冲区与旧缓冲区共享内容。对旧缓冲区内容的更改将在新缓冲区中可见,反之亦然。如果我想要字节缓冲区的深层副本呢?