[AppleScript] 纯文本查看 复制代码 package myexam;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/*
* 有如下文件: 1.mp3 需求:把1.mp3,切割成10份小文件 提示:读取
* 一个文件,写到10个目的地去即可!
*
*/
public class Test17 {
public static void main(String[] args) throws IOException {
/*
* 思路:一个读取流,对应多个输出流,生成的碎片文件要有有序的序号。
* 前提:1.mp3文件要存在
*/
File srcFile=new File("1.mp3");
File dirFile=new File("filesPlit");
fileSplit(srcFile, dirFile);
}
public static void fileSplit(File srcFile,File dirFile) throws IOException {
if(!dirFile.exists()){
dirFile.mkdir();
}
if(!srcFile.exists()){
throw new RuntimeException(srcFile.getAbsolutePath()+",源文件不存在!");
}
//1.读取源文件,定义流跟原文件相关联
FileInputStream fis=new FileInputStream(srcFile);
//2.创建一个目的引用,应为目的文件有多个,所以目的引用不确定
FileOutputStream fos=null;
//3.创建一个缓冲区。
//3.1 获取源文件大小
long fileLength=srcFile.length();
byte[] buf=new byte[(int)(fileLength/10)+1];//分成10份,这里切割文件个数不太准确,可以改动10
int count=0;
int len=0;
//4.往缓冲区存储数据
while((len=fis.read(buf))!=-1){
//5.创建输出流,明确要写入的文件对象
File partFile=new File(dirFile,(++count)+".part");
fos=new FileOutputStream(partFile);
fos.write(buf, 0, len);
fos.close();
}
//用Properties集合创建一个配置文件,用于存储源文件,和分割文件的信息
Properties prop=new Properties();
prop.setProperty("partcount",Integer.toString(count));
prop.setProperty("filename",srcFile.getName());
File configFile=new File(dirFile,(++count)+".properties");
fos=new FileOutputStream(configFile);
prop.store(fos, "save part file info");
fos.close();
fis.close();
}
}
|