有谁知道最新的Java 7 API中的path.exists() API方法发生了什么? 我找不到更改日志中的更改,并且在b123和b130之间,该方法已从API中删除。我看到有一个静态的Files.exists方法,但我不确定这是否是replace。 有没有人关注Java 7的工作,知道如何处理? 谢谢你的帮助。
我想知道tomcat NIO连接器的内部。 当我们创build一个实现CometProcessor的servlet时,线程到底有多精确?每个连接仍然是一个线程? 从我所读到的,谈话就是这样的 客户端连接到一个servlet Servlet挂在连接上,直到连接的客户端有任何数据可用 数据准备好后,服务器写入httpResponse并刷新它。 这实际上断开连接? 客户端发送服务器再次挂起的另一个请求 当这种情况持续发生时,有多less线程被使用?
我不太明白他们彼此有什么不同,所以我对这两个软件包有一些疑问。 在Google上查看一下后,似乎Oracle决定使用更新的,增强的NIO.2软件包来更新NIO软件包,作为JDK7版本的一部分。 NIO软件包的性能与NIO.2软件包相比如何? 从NIO到NIO.2什么大的变化? (如新的方法,function) 为什么最初的NIO包需要更新? NIO.2现在是NIO套餐的代名词吗? 这不是我想要在我的代码中使用旧的包,我只是很好奇这一点。 请告诉我他们的区别?
Java 7引入了java.nio.file.Path作为java.io.File的可能替代品 。 有了File,当我访问一个特定的文件时,我会这样做: File parent = new File("c:\\tmp"); File child = new File(parent, "child"); // this accesses c:\tmp\child 有什么办法做到这一点与path? 我认为这将工作: Path parent = Paths.get("c:\\tmp"); Path child = Paths.get(parent.toString(), "child"); 但是调用parent.toString()看起来很丑。 有没有更好的办法?
对于我的一些Java NIO连接,当我有一个SocketChannel.write(ByteBuffer)调用时,它抛出一个IOException :“Broken pipe”。 是什么原因导致了“断pipe”,更重要的是,是否有可能从这个状态中恢复? 如果无法恢复,看起来这是一个不错的信号,说明发生了一个不可逆转的问题,我应该closures这个套接字连接。 这是一个合理的假设吗? 是否曾经有一段时间这个IOException会发生,而套接字连接仍然是正确连接(而不是在某个时候失败的工作连接)? 请注意,在尝试SocketChannel.isConnected()之前始终调用SocketChannel.isConnected()是明智的做法,如果可以,我还可以假定连接是“断开”的,如果SocketChannel.isConnected()和SocketChannel.isConnectionPending()都是false ? 谢谢!
这是从ByteBuffer获取字节的推荐方法 ByteBuffer bb =.. byte[] b = new byte[bb.remaining()] bb.get(b, 0, b.length);
我为我的套接字连接使用Java NIO,并且我的协议是基于文本的,所以我需要能够将string转换为ByteBuffers,然后将它们写入到SocketChannel中,然后将传入的ByteBuffers转换回string。 目前,我正在使用这个代码: public static Charset charset = Charset.forName("UTF-8"); public static CharsetEncoder encoder = charset.newEncoder(); public static CharsetDecoder decoder = charset.newDecoder(); public static ByteBuffer str_to_bb(String msg){ try{ return encoder.encode(CharBuffer.wrap(msg)); }catch(Exception e){e.printStackTrace();} return null; } public static String bb_to_str(ByteBuffer buffer){ String data = ""; try{ int old_position = buffer.position(); data = decoder.decode(buffer).toString(); // reset buffer's position […]
我如何从Java 7中的String对象创build一个java.nio.file.Path对象? 即 String textPath = "c:/dir1/dir2/dir3"; Path path = ?; 哪里? 是使用textPath的缺less的代码。
对于使用Java 7编写的新应用程序,是否有任何理由使用java.io.File对象,或者我们可以考虑弃用它? 我相信java.nio.file.Path可以完成java.io.File可以完成的所有工作。
我正在尝试计算光盘上文件的大小。 在java-7中,这可以使用Files.walkFileTree来完成,如我的答案所示。 但是,如果我想要使用java-8stream来完成这项工作,它将适用于某些文件夹,但不是全部。 public static void main(String[] args) throws IOException { long size = Files.walk(Paths.get("c:/")).mapToLong(MyMain::count).sum(); System.out.println("size=" + size); } static long count(Path path) { try { return Files.size(path); } catch (IOException | UncheckedIOException e) { return 0; } } 上面的代码将适用于patha:/files/但对于c:/它会抛出exception Exception in thread "main" java.io.UncheckedIOException: java.nio.file.AccessDeniedException: c:\$Recycle.Bin\S-1-5-20 at java.nio.file.FileTreeIterator.fetchNextIfNeeded(Unknown Source) at java.nio.file.FileTreeIterator.hasNext(Unknown Source) at java.util.Iterator.forEachRemaining(Unknown […]