问题标签 [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.

0 投票
0 回答
171 浏览

hadoop - Hadoop Mapreduce 使用 FileChannel、FileInputStream

我想FileChannel在 Hadoop Reducer 中使用以快速检索文件中的数据。有了它,我可以将MappedByteBuffer文件的一部分映射到内存。它在读取数据时比其他 API 更快(至少比 快得多DataInputStream)。但是,我找不到任何FileChannel从 Hadoop API 获取对象的解决方案。目前,我只发现FSDataInputStream从文件中读取数据。

我该如何解决?

0 投票
1 回答
607 浏览

java - 通过 SocketChannel 传输文件时丢失字节

我正在使用 nio ServerSocketChannel 和 SocketChannel 在客户端和服务器之间传输大文件。问题是当我将大小为 6060064 字节的文件从发送方传输到接收方时,接收方仅收到 6059040 字节丢失了一些字节。随着文件大小变大丢失字节的差异差距增加。我找不到这些字节丢失的原因。

发件人代码:

收货人代码:

发件人的输出:

字节转移 :: 18464

传输的总字节数:6060064 进度 100%

传输:6060064 字节在:119 s -> 49.67708595651809 kbytes/s

接收器输出:

字节传输 :: 0

传输的总字节数:6059040 进度 100%

接收器的 while 循环一直持续到我手动停止进程,并且bytesTransfered总是在接收器端返回零,而文件的大小增加到 6059040 字节。

请任何人都可以告诉为什么这些字节丢失。

0 投票
1 回答
559 浏览

java - 防止将 Unicode 字节顺序标记写入文件中间

此代码在文件通道中写入两个字符串

每个字符串都以 BOM 为前缀。

虽然在文件的开头有一个是可以的,但是当流的中间有一个时会产生问题。

我怎样才能防止这种情况发生?

0 投票
2 回答
2016 浏览

java - 从多个线程写入同一个文件而不锁定,Java

我正在制作一个下载管理器,我希望多个线程下载不同的文件段,以便一次写入不同位置的文件。只是为了每个人的澄清,我不希望文件被锁定,因为它会杀死不同线程一次写入的目的。我正在使用 Apache HttpClient 库和 FileChannel transferFrom()。当前代码仅下载第一个段,而忽略其他段。

代码说明: startDownload 方法创建一个新文件并检查链接是否支持部分内容,如果支持则为每个段启动线程,否则单个线程将下载整个文件。getFileName 是从 URI 中提取文件名的函数。Download 方法包含实际使用 HttpClient 下载文件然后使用 transferFrom 写入文件的代码。

对现有代码的一些修复可以使多个线程同时写入同一个文件而无需等待会很好,但如果他们可以完成上述任务,我也有兴趣研究其他更有效的技术。如果在任何情况下不等待就写入文件是不可能的,那么任何其他有效的解决方案都更受欢迎。提前致谢 :)

0 投票
1 回答
215 浏览

java - 如果 Filechannel.force(true) 抛出异常,写入的数据会发生什么?

当调用 filechannel.force 并引发异常时会发生什么?

当 filechannel.write 成功并且我们能够将整个缓冲区内容写入文件通道时,我想确定是否所有内容都已刷新到磁盘。我将调用 force(true),它会引发异常。我写入文件通道的数据会发生什么?没有任何东西刷新到磁盘或者可能是某些数据被刷新了?如何回滚操作?

0 投票
0 回答
223 浏览

java - java filechannel cpu 使用率随时间增长

我正在使用 java nio filechannel transferFrom 函数和 Apache httpclient 从互联网下载文件。它正常启动,但一段时间后cpu使用率突然增加。并且下载速度下降并最终变为零。

由于声誉低,Sry 无法发布图片

0 投票
0 回答
695 浏览

java - 如何使用 Java NIO FileChannel 通过套接字复制文件?

我应该实现一个类似于 FTP Server/Client 的简单客户端/服务器应用程序。

客户端和服务器都应该能够发送和接收文件,但现在让我们只解决从服务器向客户端发送文件的问题。

它们之间已经有一个打开的套接字,我不想使用字节缓冲区。我尝试了 Files.copy() 方法,它在客户端创建了一个文件,但里面充满了垃圾。

我一直在尝试使用 FileChannel.transferFrom/To,但似乎无法正确使用。

有人可以提供一个如何在套接字上使用它的例子吗?

0 投票
2 回答
918 浏览

java - 如何设置文件通道位置

我一次读取 510 个字节的文件。字节在字节缓冲区中,我正在使用 fileChannel 读取它们。

一旦我改变了位置,它就会再次检查while循环内的情况,然后跳出while循环。总字节数约为 8000 字节。如何倒带到 fileChannel 中的特定位置而不会导致此错误?

这是我的代码:

}

0 投票
1 回答
183 浏览

java - 文件通道读取/添加错误数据

我正在使用带有字节缓冲区的文件通道通过网络发送数据包。我的问题是,当文件通道读取最后几个字节时,即使我在写入后清除字节缓冲区,它也会从先前读取的字节中附加最后一位数据。

例如,

字节缓冲区大小 = 512 对于最后一次迭代,要发送的剩余字节为 372。它读取最后的 372,但它还在其末尾附加了另外 140 个字节(512-372),并且似乎最后 140 个字节来自前 512 个字节已发送。

这是我的代码:

0 投票
2 回答
447 浏览

java - Filechannel transferTO 的 Java 文档规范

根据Java 文档, ClosedByInterruptException在以下情况下抛出:

我想得到一些澄清。例如,有一个文件会随着新数据添加到文件末尾而偶尔扩展。transferTO在那种情况下,上述行是否意味着如果在添加新数据时,方法会FileChannel尝试复制内容,则会引发异常。

在这里,另一个线程将是 Filechannel 的 transferTO 方法,当前线程将是试图向其写入更多数据的人。

那是对的吗?