将文件流组装到hessianOutPut里,远程上传文件使用
- private static void uploadNIO(File file, HessianOutput out)
- throws IOException {
- out.writeByteBufferStart();
- System.out.println("file = " + file.exists());
- try {
- FileChannel channel = new FileInputStream(file).getChannel();
- System.out.println("file Size: " + channel.size());
- final int size = 10485760;
- ByteBuffer buf = ByteBuffer.allocateDirect(size);
- int numRead = 0;
- do {
- numRead = channel.read(buf);
- buf.flip();
- int limit = buf.limit();
- byte[] tmpByteArray = new byte[limit];
- while (buf.hasRemaining()) {
- buf.get(tmpByteArray);
- out.writeByteBufferPart(tmpByteArray, 0, limit);
- }
- buf.clear();
- } while (numRead > 0);
- out.writeByteBufferEnd(new byte[0], 0, 0);
- } catch (Error e) {
- e.printStackTrace();
- throw new RuntimeException(e);
- }
- }
Buffer要点:
capacity()
: buffer的最大容量
limit()
: 已用的buffer量
position()
: 当前定位下一个读/写的位置
mark()
: 最后一次用reset()重置的位置
-
常用方法:
方法名 |
说明 |
position() |
返回当前位置 |
position(int index) |
将index设为当前位置 |
limit() |
返回当前限度 |
limit(int newLimit) |
将newLimit设为当前限度 |
clear() |
position设0,limit设capacity,取消所有mark |
rewind() |
position设0,取消所有mark |
flip() |
limit设为当前position,position设为0 |
分享到:
相关推荐
- **组装**:接收端接收到这些分片后,需要按照一定的规则(如序列号)将它们重新组装成原始文件。这一步骤至关重要,因为只有正确组装,才能恢复出完整的文件。 3. **Java Socket编程** - **Socket**:Java的...
- 按照分割时设定的顺序,使用`OpenTextFileReader`或`OpenBinaryFileReader`打开每个部分文件,逐个读取内容,并使用`ReadAllBytes`或`ReadAllText`将其写入组装文件。 - 读取完所有部分文件后,关闭所有打开的...
综上所述,"Netty5多文件、大文件上传源码"涉及到的技术点包括Netty框架的使用、多文件上传的实现、大文件分块传输、长连接管理、心跳机制、错误处理与重试策略、性能优化以及安全性措施。这些知识点共同构建了一个...
4. **分块发送文件**:由于WebSocket允许发送二进制数据,我们可以将文件内容按一定大小(例如64KB)分割成多个数据块,然后逐个发送到服务器。每个数据块都需要包含必要的元信息,比如文件名、总块数、当前块序号等...
在使用POST请求上传文件时,我们需要将文件组装成form-data类型。这是因为POST请求的body中可以包含文件数据,而form-data类型可以正确地传输文件数据。在Vue.js中,我们可以使用axios库来发送POST请求,并将文件...
- **文件组装**:根据接收到的块信息,将文件块保存到服务器的临时文件中,并按顺序合并成完整文件。 - **状态更新**:服务器端维护文件块的状态数据库,确保所有块按顺序接收且无遗漏。 6. **安全性与优化**: ...
标题中的“如何在VB中分割一个文件并组装恢复它”是指使用Visual Basic(VB)编程语言来实现文件的分割和合并功能。这是一个常见的需求,特别是在处理大文件时,可能需要将其分割成更小的部分以便于传输或存储,然后...
当我们需要从FLV文件中提取H264视频流时,通常是为了进行视频处理、分析或转换到其他格式。 提取H264视频流的过程涉及以下几个关键知识点: 1. **FLV文件结构**:FLV文件由头部信息、数据标签(Data Tags)和尾部...
将大文件分割成多个小块,分别上传,最后再进行合并,可以提高上传速度和稳定性。 4. **断点续传**:当上传过程中网络中断,可以记录已上传的块,下次续传,避免重新上传整个文件。 5. **多线程上传**:通过并发上传...
前端通过多次请求获取到文件的所有分片后,按照正确的顺序将接收到的二进制数据流拼接在一起,然后触发浏览器的下载行为,可以使用Blob对象和URL.createObjectURL方法创建一个指向文件内容的URL,再设置一个下载...
在某些场景下,我们可能希望直接以流的形式处理Excel数据,而不是先将其保存为一个实际的文件,然后再作为附件发送。这样可以节省磁盘空间,提高效率。本文将详细介绍如何在Java中实现这个功能。 首先,我们需要...
1. **文件分割**:使用FileStream读取大文件,然后使用MemoryStream或其他方法将文件分割为多个小块。 2. **初始化上传**:创建一个POST请求,发送文件元数据(如文件名、总大小等)到服务器,服务器返回一个唯一的...
在服务器端,接收到数据后,也需要使用文件流将接收到的数据写入到本地文件,从而实现文件的下载。 为了确保数据完整性和效率,我们可以使用**缓冲区**来存储和处理数据。缓冲区可以减少磁盘I/O操作的次数,提高...
例如,描述中提到的“readuff.m”可能是这样一个函数,用于解析UFF文件并将其内容加载到MATLAB工作空间。这样的函数通常需要理解UFF文件的内部结构,包括数据的组织方式、标头信息以及数据编码等。 **读取UFF数据的...
总之,在VB中实现文件分割与组装是一个涉及文件流操作的过程,需要合理规划文件命名和保存元数据,以确保在组装时能正确地复原原始文件。通过学习和实践这样的例子,开发者可以更好地掌握文件处理技术,提升自己的...
总的来说,"WIN10文件分割合并"涉及到的关键知识点包括:Windows 10环境下大文件的管理,文件分割的必要性,文件分割器的使用,以及如何通过FileSplitter这样的工具高效地进行文件分割和合并。理解并掌握这些知识,...
php+html5多进程实现超大附件无刷新上传,支持超大文件,核心原理是前端将文件分割成多个片段,然后依次将片段上传到服务器,服务器后端接收到全部片段后,再组装成完整的文件,后端在组装片段时,会将校验原始文件...
3. 当接收到所有数据块并按顺序写入后,使用`FileChannel`的`transferTo`或`mergeFiles`方法将临时文件合并成原始大文件。 在整个过程中,需要注意的是数据完整性和错误处理。例如,可以为每个数据块添加校验和,...
- 将大文件分割成多个小块,然后依次通过输出流(OutputStream)发送到服务器。 - 每个数据块前加上其位置信息和校验码,确保服务器能正确重组文件。 - 发送完成后,关闭Socket连接。 在这个项目中,...
ILASM(Intermediate Language Assembler)是.NET框架中的一个工具,它是.NET编程模型的一部分,主要用于将中级语言(IL,Intermediate Language)代码组装成可执行的.NET模块或程序集,如DLL或EXE文件。ILASM是.NET...