Tag: nio

将FloatBuffer转换为ByteBuffer

ByteBuffer提供asFloatBuffer()函数。 但是,没有等效的FloatBuffer.asByteBuffer() 我想做: float[] array = … try( ByteChannel channel = Files.newByteChannel( path, WRITE, CREATE, TRUNCATE_EXISTING ) ) { channel.write (FloatBuffer.wrap (array) .asByteBuffer()); } 有没有办法有效地做到这一点,或者我不得不求助于分配ByteBuffer如: ByteBuffer buffer = ByteBuffer.allocate( array.length * 4 ); buffer .asFloatBuffer() .put (array); channel.write (buffer);

kafka.consumer.SimpleConsumer:由于套接字错误而重新连接:java.nio.channels.ClosedChannelException

我正在为kafka运行一个简单的消费者,例如: int timeout = 80000; int bufferSize = 64*1024; consumer = new SimpleConsumer(host, port,timeout, bufferSize, clientName); 这运行好几个小时,但我稍后在kafka.consumer.SimpleConsumer上得到一个例外:由于套接字错误重新连接: java.nio.channels.ClosedChannelException 和消费者停止……以前有人遇到过这个问题吗?

当我无缘无故地写入水槽时,NIO Pipe抛出“Broken Pipe”! 怎么调试?

我相信我已经做好了一切。 我创建一个管道,将接收器传递给写入器线程,使用OP_READ在我的选择器上注册源,启动我的选择器。 一切正常,但一旦我向水槽写东西,我就会得到一个破损的管道exception。 为什么!!! ??? 这里没有破裂的管道。 我烦了。 我如何调试/了解这里发生的事情? 有没有人有一个简单的管道示例,我可以运行来测试这是否有效。 在接收器上写入的线程和读取它的选择器。 编辑:我几乎遵循这里的建议。 在互联网上很难找到NIO管道的具体例子。 import java.io.*; import java.nio.ByteBuffer; import java.nio.channels.*; import java.util.Iterator; public class SystemOutPipe extends Thread { public static void main(String[] args) { try { SystemOutPipe sop = new SystemOutPipe(); sop.start(); System.out.println(“This message should be redirected to System.err\nNow waiting 5 seconds …”); Thread.sleep(5000L); sop.setStopped(true); sop.join(); } […]

Charset做的ByteBuffer.asCharBuffer()使用什么?

Charset做的ByteBuffer.asCharBuffer()使用什么? 它似乎在我的系统上将3个字节转换为一个字符。 在相关的说明中, CharsetDecoder如何与ByteBuffer.asCharBuffer()相关联? 更新 :关于我正在使用的ByteBuffer的实现,我正在调用ByteBuffer.allocate(1024).asCharBuffer() 。 我不能评论在幕后使用什么实现。

如何将数据写入套接字通道

是否有任何小工作程序用于使用java nio从客户端接收和发送数据。 实际上我无法写入套接字通道,但我能够读取传入的数据如何将数据写入套接字通道 谢谢迪帕克

在Java中有效地读取zip文件

我正在开发一个可以处理大量数据的项目。 我有很多(数千个)zip文件,每个文件包含一个简单的txt文件,包含数千行(大约80k行)。 我目前正在做的是以下内容: for(File zipFile: dir.listFiles()){ ZipFile zf = new ZipFile(zipFile); ZipEntry ze = (ZipEntry) zf.entries().nextElement(); BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze))); … 通过这种方式,我可以逐行读取文件,但它的定义太慢了。 鉴于需要读取大量文件和行,我需要以更有效的方式阅读它们。 我找了一个不同的方法,但我找不到任何东西。 我认为我应该使用的是用于密集I / O操作的java nio API,但我不知道如何将它们与zip文件一起使用。 真的很感激任何帮助。 谢谢, 马尔科

如何使用Java代码将图像权限模式更改为777?

我想使用Java代码将权限模式值“777”赋予映像文件。 我怎样才能用Java来表达呢? 因为我无法使用默认权限模式“664”删除图像。

java.nio vs每个socket的新线程

我正在开发一个1到多个服务器客户端应用程序,这是一个小项目。 由于套接字IO阻塞。 我正在为此寻找解决方案。 谁能告诉我这两种解决方案的优劣是什么? 使用java.nio 每个连接的客户端都有一个新的线程。 谢谢

如何在Java中取消Files.copy()?

我正在使用Java NIO复制一些东西: Files.copy(source, target); 但是我想让用户能够取消它(例如,如果文件太大而且需要一段时间)。 我该怎么做?

BufferOverflowException的原因是什么?

exception堆栈是 java.nio.BufferOverflowException at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:327) at java.nio.ByteBuffer.put(ByteBuffer.java:813) mappedByteBuffer.put(bytes); 代码: randomAccessFile = new RandomAccessFile(file, “rw”); fileChannel = randomAccessFile.getChannel(); mappedByteBuffer = fileChannel.map(MapMode.READ_WRITE, 0, file.length()); 并调用mappedByteBuffer.put(bytes); 是什么原因mappedByteBuffer.put(bytes)抛出BufferOverflowException 如何找到原因?