/*
分割合并小文件
在c盘先手动粘贴一个jpg文件,大概2.5M大小,便于观察
在c盘手动建立一个文件夹splits,用于存放分割后的文件
这个图片文件将被分成3块:(1M ,1M , 0.5M) 大小
本例中有很多细节方面没写,只有大致的功能实现过程
异常也直接抛了
[示例]:分割合并文件
*/
import java.io.*;
import java.util.*;
class Demo
{
public static void main(String[] args) throws IOException
{
splitFile();//分割
merger(); //合并文件
}
public static void merger() throws IOException //合并文件
{
ArrayList<FileInputStream> al =new ArrayList<FileInputStream>();
for(int x=1;x<=3;x++)
{
al.add(new FileInputStream("c:\\splits\\"+x+".part")); //有3个part文件要合并
}
final Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = //实现枚举器
new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement() //返回迭代的下一个枚举器中的元素
{
return it.next();
}
};
SequenceInputStream sis = new SequenceInputStream(en); //流串联器
FileOutputStream fos = new FileOutputStream("c:\\splits\\all.jpg");
byte[] buf = new byte[1024*1024]; //1M空间的数组
int len = 0;
while(true)
{
len = sis.read(buf);
if(len!=-1)
{
fos.write(buf,0,len);
}
else
{
break;
}
}
fos.close();
sis.close();
}
public static void splitFile() throws IOException //分割文件
{
FileInputStream fis = new FileInputStream("c:\\m.jpg");
FileOutputStream fos = null;
byte[] buf = new byte[1024*1024];
int len =0;
int partCount =0; //块数
while(true)
{
len=fis.read(buf);
if(len!=-1)
{
partCount++;
fos = new FileOutputStream("c:\\splits\\"+partCount+".part");
fos.write(buf,0,len);
fos.close();
}
else
{
break;
}
}
fis.close();
}
}
- 大小: 23 KB
分享到:
相关推荐
### Java分布式应用学习笔记05多线程下的并发同步器 #### 1. 前言 在现代软件开发中,特别是在分布式系统和高性能计算领域,有效地管理多线程之间的协同工作至关重要。Java语言提供了丰富的工具和API来帮助开发者...
### Hadoop 安装及详细学习笔记 #### Hadoop 概述 Hadoop 是一个能够对大量数据进行分布式处理的软件框架,它旨在提供高扩展性、可靠性和高效性,适用于处理PB级别的数据集。Hadoop 的核心组件包括 HDFS(Hadoop ...
在本篇《Java数据结构和算法》学习笔记中,我们将深入探讨递归和归并排序。递归是一种强大的编程技术,常用于解决复杂问题,而归并排序则是利用递归实现的一种高效排序算法。 首先,让我们理解什么是递归。递归是...
- Java 7引入的并行计算框架,适用于分割大任务为小任务并行处理,再合并结果。 6. **ThreadLocal**: - 每个线程都拥有自己的副本,常用于存储线程私有数据。 7. **死锁、活锁与饥饿**: - 死锁:多个线程互相...
**Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...
4. **文件上传**:文件上传至HDFS的过程涉及文件切分、Block创建以及Block副本的存储策略。文件类图.jpg可能描绘了这个过程,包括客户端如何与NameNode交互,如何将大文件分割成多个Block,以及Block如何在集群中...
【压缩包子文件的文件名称列表】: "Java性能优化技巧集锦1 .txt" 这个文件名暗示了压缩包中可能包含了一篇关于Java性能优化的文章或笔记。在Java开发中,性能优化是至关重要的,特别是对于大规模应用和高并发场景。...
它将大文件分割成块并分布在多台机器上,确保高可用性和容错性。在"读取数据流程.png"中,我们可以看到数据从客户端经过NameNode和DataNode的交互,最终被读取的过程。 2. **MapReduce**:MapReduce是一种编程模型...
- **前言**:这部分主要介绍了作者王重东的学习心得和笔记整理的过程。 #### 三、EBS 入门指南 - **入门一周之口水贴**:介绍EBS的基础概念、术语和常见操作流程。 - **入门二周之口水贴**:深入讲解如何使用EBS...
TXT文件是计算机中最常见的纯文本文件格式,通常用于存储文本信息,如文档、笔记或编程代码。这个阅读器源码提供了一个简单易用的界面,让用户能够轻松打开、查看和浏览TXT文件。 在源码中,我们可以学习到以下几个...
HDFS是分布式文件系统,它将大文件分割成块,并在多台服务器上存储,以实现数据冗余和高可用性;MapReduce则是一种并行处理和计算框架,用于处理和生成大数据集。 搭建Hadoop集群的第一步是准备硬件环境,通常包括...
4. **字符串处理**:PHP提供了丰富的字符串操作函数,如`substr()`截取子串,`strpos()`查找子串位置,`str_replace()`替换子串,`explode()`和`implode()`分割和合并字符串。 5. **数组操作**:PHP支持索引数组和...
### 算法刷题笔记leetcode/lintcode ...整体来看,这份笔记旨在帮助读者系统地学习算法知识,提高解决实际问题的能力。无论是对于准备面试的技术人员还是想要深入研究算法的学生来说,都是一个非常宝贵的资源。
`README.txt`文件通常用于提供项目概述、安装指南、运行步骤以及开发者笔记等内容。在这个大数据项目中,`README.txt`可能详细解释了如何构建和运行`main.java`,包括依赖库的安装、数据输入路径的设定以及预期的...
学习Hadoop通常会涉及到本地环境的搭建,包括安装Java环境、下载Hadoop二进制包、配置环境变量、修改Hadoop配置文件如`core-site.xml`、`hdfs-site.xml`和`yarn-site.xml`等。 7. **Hadoop实战**: 在掌握了基本...
- **问题分类**:文档中的18个问题涵盖了从简单到复杂的多个方面,包括链表的基本操作、排序、分割、合并等。 - **问题解决策略**:对于每一个问题,都需要仔细分析其特点,确定最合适的解决方案。例如,对于删除...
链接器负责将编译后的目标文件合并成可执行文件或共享库。共享库(如Java的JNI)允许跨语言调用。链接器的主要任务是符号解析和重定位,确定符号的内存地址。 **第八章 异常控制流** 多任务通过时间分片实现。进程...
这个压缩包"InterviewBit-main"很可能包含了一系列与该平台上的编程挑战相关的代码或笔记。让我们深入探讨这些实践问题和解决方案可能涵盖的IT知识点。 1. **算法与数据结构**: - **排序与搜索**:快速排序、归并...
虽然标签部分为空,我们可以根据标题和描述推测,这个压缩包可能包含一系列的教学视频、笔记、代码示例或者相关资源,用于辅助学习全栈开发技能。全栈工程师需要掌握的技能包括但不限于: 1. **前端技术**:HTML、...
通过这部分内容的学习,学员可以掌握构建基础Web页面的技能,包括页面结构的创建、样式设计、交互逻辑的实现,以及理解Web应用在服务器端的部署和运行机制。这些技能是开发动态、交互式Web应用的基础,并且是Java ...