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文件(File)、流(Stream)和IO
下一篇: 数据库MySQL-查询练习3