`

java学习笔记:文件的分割合并

    博客分类:
  • java
阅读更多

/*  
分割合并小文件
在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
0
0
分享到:
评论

相关推荐

    Java分布式应用学习笔记05多线程下的并发同步器

    ### Java分布式应用学习笔记05多线程下的并发同步器 #### 1. 前言 在现代软件开发中,特别是在分布式系统和高性能计算领域,有效地管理多线程之间的协同工作至关重要。Java语言提供了丰富的工具和API来帮助开发者...

    hadoop安装及详细学习笔记

    ### Hadoop 安装及详细学习笔记 #### Hadoop 概述 Hadoop 是一个能够对大量数据进行分布式处理的软件框架,它旨在提供高扩展性、可靠性和高效性,适用于处理PB级别的数据集。Hadoop 的核心组件包括 HDFS(Hadoop ...

    《Java数据结构和算法》学习笔记(5)——递归 归并排序

    在本篇《Java数据结构和算法》学习笔记中,我们将深入探讨递归和归并排序。递归是一种强大的编程技术,常用于解决复杂问题,而归并排序则是利用递归实现的一种高效排序算法。 首先,让我们理解什么是递归。递归是...

    j7cc:Java 7 Concurrency Cookbook 翻译+学习笔记

    - Java 7引入的并行计算框架,适用于分割大任务为小任务并行处理,再合并结果。 6. **ThreadLocal**: - 每个线程都拥有自己的副本,常用于存储线程私有数据。 7. **死锁、活锁与饥饿**: - 死锁:多个线程互相...

    lucene基础学习笔记&源码

    **Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...

    传智黑马赵星老师hadoop七天课程资料笔记-第二天(全)

    4. **文件上传**:文件上传至HDFS的过程涉及文件切分、Block创建以及Block副本的存储策略。文件类图.jpg可能描绘了这个过程,包括客户端如何与NameNode交互,如何将大文件分割成多个Block,以及Block如何在集群中...

    各种排序算法java实现

    【压缩包子文件的文件名称列表】: "Java性能优化技巧集锦1 .txt" 这个文件名暗示了压缩包中可能包含了一篇关于Java性能优化的文章或笔记。在Java开发中,性能优化是至关重要的,特别是对于大规模应用和高并发场景。...

    传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)

    它将大文件分割成块并分布在多台机器上,确保高可用性和容错性。在"读取数据流程.png"中,我们可以看到数据从客户端经过NameNode和DataNode的交互,最终被读取的过程。 2. **MapReduce**:MapReduce是一种编程模型...

    Oracle EBS 开发笔记

    - **前言**:这部分主要介绍了作者王重东的学习心得和笔记整理的过程。 #### 三、EBS 入门指南 - **入门一周之口水贴**:介绍EBS的基础概念、术语和常见操作流程。 - **入门二周之口水贴**:深入讲解如何使用EBS...

    简易TXT阅读器源码

    TXT文件是计算机中最常见的纯文本文件格式,通常用于存储文本信息,如文档、笔记或编程代码。这个阅读器源码提供了一个简单易用的界面,让用户能够轻松打开、查看和浏览TXT文件。 在源码中,我们可以学习到以下几个...

    笔记(word版本).zip

    HDFS是分布式文件系统,它将大文件分割成块,并在多台服务器上存储,以实现数据冗余和高可用性;MapReduce则是一种并行处理和计算框架,用于处理和生成大数据集。 搭建Hadoop集群的第一步是准备硬件环境,通常包括...

    phpend-maste大一大二笔记

    4. **字符串处理**:PHP提供了丰富的字符串操作函数,如`substr()`截取子串,`strpos()`查找子串位置,`str_replace()`替换子串,`explode()`和`implode()`分割和合并字符串。 5. **数组操作**:PHP支持索引数组和...

    算法刷题笔记leetcode/lintcode

    ### 算法刷题笔记leetcode/lintcode ...整体来看,这份笔记旨在帮助读者系统地学习算法知识,提高解决实际问题的能力。无论是对于准备面试的技术人员还是想要深入研究算法的学生来说,都是一个非常宝贵的资源。

    java代码-20 大数据郑立群

    `README.txt`文件通常用于提供项目概述、安装指南、运行步骤以及开发者笔记等内容。在这个大数据项目中,`README.txt`可能详细解释了如何构建和运行`main.java`,包括依赖库的安装、数据输入路径的设定以及预期的...

    hadoop学习总结1-5

    学习Hadoop通常会涉及到本地环境的搭建,包括安装Java环境、下载Hadoop二进制包、配置环境变量、修改Hadoop配置文件如`core-site.xml`、`hdfs-site.xml`和`yarn-site.xml`等。 7. **Hadoop实战**: 在掌握了基本...

    linkedlist problems

    - **问题分类**:文档中的18个问题涵盖了从简单到复杂的多个方面,包括链表的基本操作、排序、分割、合并等。 - **问题解决策略**:对于每一个问题,都需要仔细分析其特点,确定最合适的解决方案。例如,对于删除...

    Eandal Bryant_深入理解计算机系统笔记

    链接器负责将编译后的目标文件合并成可执行文件或共享库。共享库(如Java的JNI)允许跨语言调用。链接器的主要任务是符号解析和重定位,确定符号的内存地址。 **第八章 异常控制流** 多任务通过时间分片实现。进程...

    InterviewBit:InterviewBit实践问题的解决方案

    这个压缩包"InterviewBit-main"很可能包含了一系列与该平台上的编程挑战相关的代码或笔记。让我们深入探讨这些实践问题和解决方案可能涵盖的IT知识点。 1. **算法与数据结构**: - **排序与搜索**:快速排序、归并...

    全栈工程师修炼指南 下载下载因为太大存百度云盘1.zip

    虽然标签部分为空,我们可以根据标题和描述推测,这个压缩包可能包含一系列的教学视频、笔记、代码示例或者相关资源,用于辅助学习全栈开发技能。全栈工程师需要掌握的技能包括但不限于: 1. **前端技术**:HTML、...

    Web核心(前端、serverlt)

    通过这部分内容的学习,学员可以掌握构建基础Web页面的技能,包括页面结构的创建、样式设计、交互逻辑的实现,以及理解Web应用在服务器端的部署和运行机制。这些技能是开发动态、交互式Web应用的基础,并且是Java ...

Global site tag (gtag.js) - Google Analytics