草庐IT

fileChannel

全部标签

java - DocumentFile 随机访问文件

有没有办法从给定的DocumentFile中获取RandomAccessFile?我知道可以通过getUri获取InputStreamInputStreaminputStream=getContentResolver().openInputStream(DocumentFile.getUri());但我需要一个RandomAccessFile谢谢你的帮助,詹斯 最佳答案 对于SDK21(Lollipop)来说,获得对SD卡上文件的随机读/写访问权限的唯一方法似乎如下:importandroid.content.Context;imp

java - 需要将 AssetInputStream 转换为 FileInputStream

我已经实现了一个可以在我的电脑上运行的数据结构,现在我正试图将它移植到我的android应用程序中。我打开原始.dat资源并获得InputStream但我需要获得FileInputStream:FileInputStreamfip=(FileInputStream)context.getResources().openRawResource(fileID);FileChannelfc=fip.getChannel();longbytesSizeOfFileChannel=fc.size();MappedByteBuffermbb=fc.map(FileChannel.MapMode.R

android - 使用 mp4parser ,如何处理从 Uri 和 ContentResolver 获取的视频?

背景我们想让用户从任何应用程序中选择一个视频,然后将视频剪辑到最长5秒。问题为了选择一个Uri,我们让它工作正常(解决方案可用here)。至于修剪本身,除了一个名为"k4l-video-trimmer"的库之外,我们找不到任何具有许可的好库。.例如,库“FFmpeg”被视为未经许可,因为它使用GPLv3,这要求使用它的应用程序也是开源的。此外,正如我所读,它需要相当多的空间(大约9MB)。可悲的是,这个库(k4l-video-trimmer)非常旧并且多年没有更新,所以我不得不fork它(here)以便很好地处理它。它使用一个名为"mp4parser"的开源库进行修剪。问题是,这个库似

java - 使用java FileChannel FileLock来防止文件写入但允许读取

我想我误解了FileChannel的锁定功能是如何工作的。我想在一个文件上拥有独占写入锁,但允许从任何进程读取。在运行Java7的Windows7机器上,我可以使用FileChannel的锁,但它会阻止其他进程的读取和写入。如何实现不允许写入但允许其他进程读取的文件锁? 最佳答案 FileChannel.lock()处理文件区域,而不是文件本身。锁可以是共享的(许多读者,没有作者)或独占的(一个作者,没有读者)。我猜您正在寻找一个有点不同的功能-打开一个文件进行写入,同时允许其他进程打开它进行读取但不允许写入。这可以通过Java7实

java - 如何为大日志文件编写 Java 文本文件查看器

我正在开发一款带有集成日志文件查看器的软件产品。问题是,对于非常大的文件,它很慢而且不稳定,因为当您查看日志文件时,它会将整个文件读入内存。我想编写一个新的日志文件查看器来解决这个问题。为大型文本文件编写查看器的最佳做法是什么?notepad++和VIMa等编辑器是如何做到这一点的?我正在考虑将缓冲的双向文本流阅读器与Java的TableModel一起使用。我的思路是否正确,此类流实现是否可用于Java?编辑:是否值得运行文件一次以索引每行文本的开头位置,以便知道要查找到哪里?我可能需要行数,所以可能必须至少扫描一次文件?Edit2:我已将我的实现添加到下面的答案中。请对其发表评论或对

java - 为什么 FileChannel.map 占用了 Integer.MAX_VALUE 的数据?

我在使用FileChannel.map时遇到以下异常Exceptioninthread"main"java.lang.IllegalArgumentException:SizeexceedsInteger.MAX_VALUEatsun.nio.ch.FileChannelImpl.map(UnknownSource)atniotest.NioTest.readUsingNio(NioTest.java:38)atniotest.NioTest.main(NioTest.java:64)快速查看OpenJdk实现表明FileChannelImpl中的方法map(..)将long类型的si

java - 我应该关闭 FileChannel 吗?

我今天遇到了一个与我们的实用程序类有关的问题。它是文件的助手,包含一些静态文件复制例程。以下是提取的相关方法和测试方法。问题是有时setLastModified调用会失败,返回false。在我的PC(Windows7,最新的Java)上,我有时会收到“setLastModifiedfailed”消息(1000次中大约有25次)。我现在已经通过删除FileChannel.close调用解决了这个问题,但我更愿意理解为什么会发生这种情况,即使这是正确的解决方案。有没有人遇到同样的问题?privatevoidtestCopy()throwsFileNotFoundException,IOEx

java - 如何使用 FileChannels transferFrom() 方法监控进度(JProgressBar)?

我需要一些关于JProgressBar组件的帮助。我的程序使用java.nioFileChannels将文件从一个地方复制到另一个地方。实际的复制方法是transferFrom()。我现在有两个问题。如何监控FileChannels的传输进度?我发现的所有教程都使用传统的java.ioInputStreams并在循环输入流时增加progressint。我的复制方法(FileChannel方法)被封装在一个单独的方法中,该方法由循环遍历源文件夹和目标文件夹的其他方法调用,然后为每个文件调用FileChannel方法。如何为完整的复制机制实现ProgressBar?好吧,我应该早点阅读常见

java - Java中的文件截断操作

在Java中截断文件的最佳实践方法是什么?例如这个虚拟函数,只是作为一个例子来阐明意图:voidreadAndTruncate(Filef,Listlines)throwsFileNotFoundException{for(Scanners=newScanner(f);s.hasNextLine();lines.add(s.nextLine())){}//truncatefhere!how?}无法删除该文件,因为该文件正在充当占位符。 最佳答案 使用FileChannel.truncate:try(FileChanneloutCha

java - 在 Java 中访问内存的最佳方式是什么,类似于 mmap?

我正在开发一个需要与C应用程序通信的Java应用程序。C应用程序使用共享内存和mmap进行通信,我需要Java应用程序能够访问相同的内存。我的第一次尝试涉及使用JNI调用从共享内存中检索数据,但是每个JNI调用的开销都会影响性能,所以我想要一种方法来访问Java中的内存并在Java方面。我的想法是我需要执行以下操作:使用一个JNI调用来获取我需要附加到的共享内存位置的位置创建一个新的FileChannel()使用该FileChannel通过map()创建一个MappedByteBuffer这是最好的方法吗?另外,我不确定如何实际创建FileChannel以指向正确的内存位置。