package cn.itcast.io.p1.splitfile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

/*
 * 文件切割器。
 *
 *
 *
 *
 */

public class SplitFileDemo {

private static final int SIZE = 1024 * 1024;

/**
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {

File file = new File("c:\\aa.mp3");

splitFile_2(file);
 }

private static void splitFile_2(File file) throws IOException {

// 用读取流关联源文件。
  FileInputStream fis = new FileInputStream(file);

// 定义一个1M的缓冲区。
  byte[] buf = new byte[SIZE];

// 创建目的。
  FileOutputStream fos = null;

int len = 0;
  int count = 1;
  
  
  /*
   * 切割文件时,必须记录住被切割文件的名称,以及切割出来碎片文件的个数。 以方便于合并。
   * 这个信息为了进行描述,使用键值对的方式。用到了properties对象
   *
   */
  Properties prop  = new Properties();

File dir = new File("c:\\partfiles");
  if (!dir.exists())
   dir.mkdirs();

while ((len = fis.read(buf)) != -1) {

fos = new FileOutputStream(new File(dir, (count++) + ".part"));
   fos.write(buf, 0, len);
   fos.close();
  }
  
  //将被切割文件的信息保存到prop集合中。
  prop.setProperty("partcount", count+"");
  prop.setProperty("filename", file.getName());
  
  
  
  fos = new FileOutputStream(new File(dir,count+".properties"));
  
  //将prop集合中的数据存储到文件中。
  prop.store(fos, "save file info");

fos.close();
  fis.close();

}

public static void splitFile(File file) throws IOException {

// 用读取流关联源文件。
  FileInputStream fis = new FileInputStream(file);

// 定义一个1M的缓冲区。
  byte[] buf = new byte[SIZE];

// 创建目的。
  FileOutputStream fos = null;

int len = 0;
  int count = 1;

File dir = new File("c:\\partfiles");
  if (!dir.exists())
   dir.mkdirs();

while ((len = fis.read(buf)) != -1) {

fos = new FileOutputStream(new File(dir, (count++) + ".part"));
   fos.write(buf, 0, len);
  }

fos.close();
  fis.close();

}

}

java IO流之文件切割两例(含Properties 用法)的更多相关文章

  1. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  2. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

  3. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

  4. java IO流 对文件操作的代码集合

    Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...

  5. IO流_文件切割与合并

    切割可以分两种方式:按文件个数切,按文件大小来切(建议用这种方式,因为按个数的话,有可能文件非常大) import java.io.File; import java.io.FileInputStre ...

  6. IO流_文件切割与合并(带配置信息)

    在切割文件的时候应该生成一个记录文件信息的文件,以便在以后合并文件的时候知道这个文件原来的文件名和记录文件切割完后生成了多少个切割文件 import java.io.File; import java ...

  7. java IO流 Zip文件操作

    一.简介 压缩流操作主要的三个类 ZipOutputStream.ZipFile.ZipInputStream ,经常可以看到各种压缩文件:zip.jar.GZ格式的压缩文件 二.ZipEntry   ...

  8. java io流 对文件操作

    检查文件是否存在 获取文件路径 获取文件大小 ...... 更多参考手册 //对文件的操作 //检查文件是否存在 //获取文件路径 //获取文件大小 //文件是否可读 //文件是否可写 //.... ...

  9. java Io流更新文件内容

    package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class FileOut ...

随机推荐

  1. 安装arcgis10.5不能启动服务的解决方案转

    柚子的二分口粮地 来自:http://www.cnblogs.com/youzi-xuchongyou/p/7218422.html 安装arcgis10.5不能启动服务的解决方案 最近由于公司需要, ...

  2. gflags摘记

    projcet url: https://github.com/schuhschuh/gflags usage: commandline flags processing DEFINE: Defini ...

  3. Java 8 中 HashMap 的性能提升

    HashMap是一个高效通用的数据结构,它在每一个Java程序中都随处可见.先来介绍些基础知识.你可能也知 道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶 ...

  4. [runtime] iOS-Runtime-Headers

    Dynamically Generated iOS Headers https://github.com/nst/iOS-Runtime-Headers Here are iOS Objective- ...

  5. [翻译] 使用开源库 JGDownloadAcceleration 控制下载队列,断点下载,加速下载

    JGDownloadAcceleration 本人对原文进行了翻译,凑合看看,使用心得以后补上 https://github.com/JonasGessner/JGDownloadAccelerati ...

  6. MIR Flickr 1M 图像数据集(点击即可下载)

    Index of /mirflickr/mirflickr1m Name Last modified Size Description Parent Directory   -   exif.zip ...

  7. 第十二章 springboot + mongodb(复杂查询)

    简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...

  8. Android视频播放-SurfaceView和Mediaplayer

    好几天没写博客了,处理了一点个人私事加上平时加班,基本上时间不充裕,上篇文章讲了一下用Mediaplayer来播放音乐,这次就讲讲使用Mediaplayer来和SurfaceView配合播放一个视频流 ...

  9. WordPress 后台上传自定义网站Logo

    需求: 众所周知一般网站的logo都是固定的所以我在做网站时也是使用的静态logo文件,但最近用wp给一个客户做的网站时,因为网站现在的logo可能会需要重新设计,所以客户提出了需要在后台可以自己修改 ...

  10. (转)ngui3.5.7 版本Scroll View实现方法

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xyo123.blog.51cto.com/6369437/1405861 现在网 ...