java IO流之文件切割两例(含Properties 用法)

时间:2022-12-22 09:17:02

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. 15.linux按键驱动程序(二)

    linux按键驱动程序 包含内容定时器延时去抖动,阻塞型设备驱动设计 一.定时器延时去抖 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开.因而 ...

  2. ebs r12 -- adadmin: error while loading shared libraries: libclntsh.so.10.1

    安装EBS R12.2增加中文字符集时,运行$AU_TOP/bin/adadmin出错: $ adadmin adadmin: error while loading shared libraries ...

  3. python:轮播图

    下载jquery.bxslider 参考地址:www.bxslider.com 引入jquery.bxslider.css和jquery.bxslider.js <!DOCTYPE HTML P ...

  4. webexam项目杂记2

    strstr,stristr是返回匹配到的字符串,常规的字符串操作尽量避免使用正则, strstr是返回从匹配字符(串)开始(包括该匹配字符串)到结束的(或开头的)字符串 而如果仅仅只是判断是否包含匹 ...

  5. java程序内存使用

    一.内存使用示意图 二.java运行时数据区域 1.程序计数器: 当前线程所执行字节码的行号提示器. 2.java虚拟机栈: 线程私有,与线程生命周期相同,保存基本数据类型,如果线程所请求的栈深度大于 ...

  6. JavaScript语言标识符和保留字

    任何一种计算机语言都离不开标识符和保留字,下面我们将详细介绍JavaScript标识符和关键字.标识符      标识符就是给变量.函数和对象等指定的名字.构成标识符的字母是有一定的规范,JavaSc ...

  7. Python函数初识

    一.函数是什么 ​ 计算机语言中的函数是类比于数学中的函数演变来的,但是又有所不同.前面的知识中我们学会了运用基础语法(列表.字典)和流程控制语句貌似也能处理一些复杂的问题,但是相对于相似的大量重复性 ...

  8. Qt消息机制和事件、事件过滤

    一,事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等 ...

  9. xeno 实时性能测试 在100us的采样周期的测试数据

    1 xeno 用户层测试时间: root@sama5d3-linux:/usr/bin latency -t0 -T25 -p100== Sampling period: 100 us== Test ...

  10. 让网页自动调用双核浏览器的极速模式(&lt&semi;meta name&equals;&quot&semi;renderer&quot&semi; content&equals;&quot&semi;webkit&quot&semi;&gt&semi;)

    背景:最近做了一个网站,传单服务器之后,每次打开都是乱码,不对啊,我在本地测得明明是排版很整齐啊,然后发现,360用的是“兼容模式”打开的,这就尴尬了,用户一打开就是乱码,这用户体验得有多差!用户可不 ...