问题标签 [filechannel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 文件通道位置和字符串长度
在 Java 中,字符长 2 个字节,但是当我使用字节缓冲区将字符串写入文件时,文件通道位置会增加字符数。我读到 Filechannel.position() 方法返回从文件开头到当前位置的字节数,所以它应该增加 2*numberof chars 吗?
java - Java XML 解析
我有一个文件,其中依次包含几个 XML 文档,如下所示。
重复几次。
我使用 Java,我为文件打开了一个 FileChannel,我有一个字节缓冲区要读取。如果有内置方式或更简单的方式或已经解决的方式来使用 Java 对 XML 字节进行部分解析,将不胜感激。例如像这样:
java - 如何使用 java.nio.channels.FileChannel 读取到 ByteBuffer 实现类似 BufferedReader#readLine() 的行为
我想用来java.nio.channels.FileChannel
从文件中读取,但我想像每行一样读取行BufferedReader#readLine()
。我需要使用java.nio.channels.FileChannel
而不是java.io
因为我需要在文件上加锁,并从该锁文件中逐行读取。所以我被迫使用java.nio.channels.FileChannel
. 请帮忙
编辑这是我尝试使用 FileInputStream 获取 FileChannel 的代码
当代码在这里时lock = channel.lock();
,它立即转到finally
并且lock
仍然是null
,所以lock.release()
生成NullPointerException
。我不确定为什么。
java - 带有 2 个进程的 Java 文件锁定
首先,我有两个同时运行且相互支持的进程。一个进程读取一个简单的平面文件,其中包含由时间戳分隔的数据快照。此应用程序只需打开此文件(不锁定文件),读取快照并将其放入另一个名为topology.netviz
(带文件锁定)的文件中。第二个应用程序读取topology.netziv
(使用文件锁定)并将数据传输到临时文件中,以减少在另一个进程之间持有锁定的编程延迟。
我的问题很简单:当我在第二个过程中将数据传输到临时文件时,会传输奇怪的字符/损坏的数据。我在下面提供了一些代码,让你们了解可能存在的问题。
过程1:
过程2:
java - 在 Java 中将 FloatBuffer 或 Float(float) 数组写入文件的最快方法
我有一堆浮点数据FloatBuffer
需要写入文件(不需要三分钟)。目前 aDataOutputStream
用于将FloatBuffer
元素一个元素地写入文件。这很慢。最好,我想使用 a FileChannel
,但我遇到了一个障碍,因为它似乎 aFloatBuffer
无法转换为 aByteBuffer
并且字节是FileChannel
写入数据所需要的。
FoatBuffers
我可以轻松地使用数组,而不是用作我的数据源。但是我不能轻易地使用 ByteBuffer/array 来代替。
对此问题的任何见解将不胜感激。谢谢。
java - FileInput/OutputStream 与 FileChannels - 提供更好的性能
我正在编写一个程序,该程序必须从一个文件夹复制大量但不是大量的数据(一次在几十张照片的范围内)。最初我是java.io.FileOutputStream
用来简单地读取以缓冲和写出,但后来我听说使用java.nio.FileChannel
.
我没有资源来使用我拥有的数据运行一个严肃的、受控的测试,但似乎没有就每种方法的优势达成共识(除了 FileChannel 是线程安全的)。一些用户报告说FileChannel
非常适合较小的文件,另一些用户报告说较大的文件速度会大大提高。
我想知道是否有人确切地知道创建的初衷是什么FileChannel
:它是为了更好的性能而设计的吗?在什么情况下?对于一般类型的数据是否有明确的性能提升,或者我应该期望看到的差异是微不足道的,因为我没有使用足够专业的数据?
编辑:假设我的数据不需要是线程安全的。
java - 使用 FileChannel 编写任何 InputStream?
我可以将任何 InputStream 写入 FileChannel 吗?
我正在使用 java.nio.channels.FileChannel 打开文件并将其锁定,然后将 InputStream 写入输出文件。InputStream 可能被另一个文件、URL、套接字或任何东西打开。我写了以下代码:
但是, outputChannel.transferFrom(...) 的第一个参数请求一个 ReadableByteChannel 对象。由于我使用 InputStream 作为输入,因此它没有 inputStream.getChannel() 方法来创建所需的通道。
有什么方法可以从 InputStream 中获取 ReadableByteChannel 吗?
android - 通过 MappedByteBuffer 将原始 VBO 数据加载到 OpenGL(不工作)
我尝试通过 Google 在 GDC 2011 上的演讲中介绍的方法加载原始的、未压缩的 VBO 数据。该方法使用 MappedByteBuffer 在随后调用 glBufferData 时快速加载数据。不幸的是,对我来说,它只是行不通。我能够为它找到一个 hacky 工作(它在下面的代码中注释掉了),但我想在没有那个 hack 的情况下让它工作。这是我的代码示例:
java - 从分隔文件中删除第一行
我有一个可以包含大约数百万条记录的分隔文件,现在我想在进一步处理之前从分隔文件中删除第一行。
第一行的长度是可变的,它根据文件类型而有所不同。现在我已经对 FileChannel 和 RandomAccessFile 进行了阅读,这被认为是删除第一行的最佳方法。
但是我无法弄清楚如何获取第一行的长度并将其删除。
java - 处理巨大的管道分隔文件
参考我之前的帖子
我能够处理较小的文件并删除第一行....但是如果文件很大,则会出现内存问题,因为我正在读取整个文件然后再次将其写回。
任何人都可以提出一个更好的选择来解决这个问题。
感谢提前。
维韦克