27得票3回答
有没有一种方法可以预防ClosedByInterruptException?

在下面的例子中,我有一个文件被两个线程使用(在实际例子中,我可以有任意数量的线程)。 import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteB...

26得票7回答
在Java中,多个线程是否可以看到对直接映射ByteBuffer的写入?

我正在处理使用内存映射文件(通过FileChannel.map())构建的ByteBuffers以及内存中的直接ByteBuffers相关的内容。我试图理解并发性和内存模型的限制。 我已经阅读了所有相关的Javadoc(和源代码),例如FileChannel、ByteBuffer、Mappe...

19得票7回答
Java NIO:transferFrom 直到流结束

我正在尝试使用NIO库。我想监听8888端口的连接,一旦接受到一个连接,就将该通道中的所有内容转储到somefile。 我知道如何使用ByteBuffers实现,但我想尝试使用传闻中效率超高的FileChannel.transferFrom来实现。 这是我的代码:ServerSocketCha...

19得票2回答
Java中RandomAccessFile的并发性问题

我正在创建一个RandomAccessFile对象来通过多个线程写入文件(在SSD上)。每个线程尝试在文件的特定位置写入直接字节缓冲区,并且我确保一个线程写入的位置不会与另一个线程重叠:file_.getChannel().write(buffer, position); 其中file_是一个...

17得票1回答
FileChannel#write会始终写入整个缓冲区吗?

这与如果有足够的数据,FileChannel.read是否会读取少于指定数量的字节?相关(或者说是“相反”的)。 TL;DR: 这是否总是写入整个缓冲区... ByteBuffer bytes = ...; fileOutputStream.getChannel().write(byte...

16得票2回答
使用mp4parser,我该如何处理从Uri和ContentResolver获取的视频?

背景 我们希望让用户从任何应用程序中选择视频,然后将视频剪辑为最长为5秒。 问题 对于获取要选择的Uri,我们已经找到了有效的解决方案(该解决方案在这里可用)。 至于剪辑本身,我们无法找到任何具有宽容许可证的好库,除了一个名为"k4l-video-trimmer"的库。例如,库"FFm...

14得票2回答
使用FileChannel写入任何InputStream?

我能否将任何InputStream写入FileChannel中? 我正在使用java.nio.channels.FileChannel打开文件并锁定它,然后向输出文件写入InputStream。该InputStream可以由其他文件、URL、套接字或任何内容打开。我编写了以下代码:FileO...

13得票2回答
我应该关闭FileChannel吗?

我今天遇到了一个我们实用工具类的问题。它是文件的帮助程序,包含一些静态文件复制例程。以下是相关方法和测试方法的提取。 问题在于有时setLastModified调用会失败,并返回false。 在我的PC上(Windows 7,最新的Java),我有时会收到“setLastModified失...

11得票1回答
如何通过Lollipop提供的API实现对SD卡上文件的随机访问?

我的应用程序使用Java类RandomAccessFile通过实现SeekableByteChannel接口在SD卡上随机读写字节。现在我需要使用新的Lollipop API重写它以适配Android 5.0。 我已经找到了唯一的方法来进行读取:InputStream inputStream...

10得票2回答
缓冲区下溢异常 Java

我正在将数值写入文件。这些数值已经被正确地写入了。在另一个应用程序中,我可以读取文件而没有任何异常。但是,在我的新应用程序中,尝试读取该文件时会出现 Bufferunderflowexception 异常。Bufferunderflowexception 是指:Double X1 = mapp...