欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java IO流_165_文件分割与合并_初始化各项参数_练习1(已经过时的方法)

程序员文章站 2024-03-04 22:02:42
...

package IO流_165_文件分割与合并_初始化各项参数;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**

  • 初始化各项参数
  • 文件的分割思路
  • 1.分割的块数 size
  • 2.每一块的大小 blockSize;最后一块的文件大小=总文件的大小-(n-1)* blockSize
  • 3.每一块的名称
  • 4.分割
  •  1)第几块开始分割,每一块的起始点,文件实际大小 
    
  •  2)文件分割 
    

*/
public class SplitFile {

private String filePath; //文件的路径

private String fileName;//文件名

private int size;//块数

private long blockSize; //每块的大小 

private List<String> blockPath;	//每块的名称  并进行存储好;这样就不用每次重新存储

/*
 * 构造器相互调用
 */
//无参构造器
public SplitFile() {
	 blockPath =new ArrayList<String>();//创建对象
}
//有参
public SplitFile(String filePath) {
	//blockSize = 1024;//定义每块的大小
	//this.filePath = filePath
    this(filePath,1024);//调用SplitFile(String filePath, long blockSize)
   
}
//有参
//文件路径和实际大小
public SplitFile(String filePath, long blockSize) {
	this();//调用SplitFile()
	this.filePath = filePath; 
	this.blockSize = blockSize;
	init();//调用
} 
/**
 *  参数初始化;计算块数,确定文件名	    
 */
public void init(){ 
	//判断文件是否为空或者文件是否存在
	File src = null;
	//程序的健壮性;注意==号;
	if(null== filePath||!((src = new File(filePath)).exists())){//exists存在
		 return;
	} 
	//判断是否是一个文件夹
	if(src.isDirectory()){//isDirectory判断是否为文件夹
		return;
	}
	//文件名
	this.fileName = src.getName();
	
	//计算块数:实际大小与每块大小;先拿出实际大小
	long length = src.length();//实际大小
	//判断后修正大小
	if(this.blockSize>length){//如果理论大小>实际大小
		this.blockSize = length;//则=实际大小
	}
	//确定块数 ;length/this.blockSize两个整数相除有可能余数为0;所以从乘以1.0;并强制double浮点类型转int
	size = (int)( Math.ceil(length*1.0/this.blockSize));//Math.ceil>=取最小整数,向上取值
	initPathName();//调用 
} 
//确定每块的名称  创建方法;内部方法
private void initPathName(){
	for(int i=0;i<size;i++){ 
		this.blockPath.add(this.fileName+".part "+i);//part部分;'.part'原来名称一部分
	}
} 
/** 
 * @param args 
 */ 

public static void main(String[] args) {
	SplitFile file = new SplitFile("E:/xp/test/char.txt",1);//按一个字节
	System.out.println("按一个字节分多少块:"+file.size);
	SplitFile file1 = new SplitFile("E:/xp/test/char.txt",10);//按10个字节
	System.out.println("按10个字节分多少块:"+file1.size);
}	 

}
//结果---------------------------------------------
系统提示
java IO流_165_文件分割与合并_初始化各项参数_练习1(已经过时的方法)
java IO流_165_文件分割与合并_初始化各项参数_练习1(已经过时的方法)
测试结果
java IO流_165_文件分割与合并_初始化各项参数_练习1(已经过时的方法)在这里插入图片描述
java IO流_165_文件分割与合并_初始化各项参数_练习1(已经过时的方法)