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. 10.2.2移动产品离线功能等具体解释----暨4月8日移动《在离线一体化》公开课Q&A

    4月8日<离,或者不离,ArcGIS移动的"在离线一体化"就在那里!>移动公开课已经结束,针对公开课上粉丝们重点关注的问题,本博客进行了具体的解答.答疑主要环绕最新的R ...

  2. Windows怎样实时同步文件夹?Java+Spring+Quartz+Tomcat集群实现

    我有一台服务器上加了两块硬盘.其中有个目录下的数据非常重要.假设是D:\data目录.这个目录下有几十个G的文件. 我希望能把这个文件夹里的内容同步到另一块硬盘的目录下,假设是E:\data 我希望最 ...

  3. spring boot注解 --@spring-boot-devtools 自动加载修改的文件和类

    spriing boot中有一个注解,是自动加载修改后的类或者文件. 使用方法为: spring-boot-devtools=true 需要引入devtools包依赖: <dependency& ...

  4. C#中的String与string

    在C#中,string 是 System.String 的别名,所以基本上在使用时是没有差别的. 习惯上,我们把字符串当作对象时(有值的对象实体),我们用string. 而我们把它当类时(需要字符串类 ...

  5. Spring 事务模板

    最近项目开发中需要用到单机事务,因为项目中使用了Spring和Mybatis框架,所以通过Spring来进行事务的管理,并且记录一下事务配置的过程 第一步:配置DataSource <!-- 发 ...

  6. [好文翻译]WEB前端性能优化的14条规则

    作为一个半前端工程师,而且只会写点HTML5和CSS3的“假”前端工程师,为了能更好地理解一下前端的花花世界,最近拜读了<高性能网站建设指南>一书,对作者提出的前端性能优化的14个规则获益 ...

  7. 创建spring boot项目启动报错遇到的问题

    1.Spring boot,Mybatis 启动报错 Failed to auto-configure a DataSource *************************** APPLICA ...

  8. SQL基础(二):SQL命令

    1.SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目.SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的(或者比如选取某个最新的数据:我们可 ...

  9. 5种调优Java NIO和NIO.2的方式

    Java NIO(New Input/Output)——新的输入/输出API包——是2002年引入到J2SE 1.4里的.Java NIO的目标是提高Java平台上的I/O密集型任务的性能.过了十年, ...

  10. C#.NET常见问题(FAQ)-程序如何单步调试和设置断点

    对于控制台程序而言,直接按F10(不按F5运行)就可以单步运行,当前运行行会显示为黄色(不管是一条语句,还是一个函数,都会直接执行完毕得到结果)   你可以在变量名上右击添加监视(会自动放到监视1中) ...