20201014冯强
学习总结:
1.流(Stream)
1.1输入流( InputStream )
一个抽象类 他的子类很多 我们只了解 FileInputSteam 和BufferInputSteam
大部分功能我们可以用FileInputStream 进行文件的读取 读取的方法是read()方法 可以传一个人byte类型的数组
BufferInputStream 是对FileInputSteam的封装 底层也是使用的FileInputSteam 不过对其增加了 标记 和重置等功能
当使用完后要调用flash()方法 不然会可能导致导入的数据不准确
1.2输出流(OutputStream)
和输入流方法相似。
作业:
package exam;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import javax.print.attribute.standard.NumberUpSupported;
public class FileCutter {
public static void main(String[] args) throws IOException {
FileCutter f = new FileCutter();
File original =new File("D:\\lol\\list\\小魂 - 关山酒.flac");
File directory = new File("D:\\lol");
System.out.println(f.split(original,10,directory));
System.out.println(f.join(directory, new File("D:\\lol\\list\\newMussic.flac")));
}
public int split(final File original, final int size, final File directory) throws IOException {
if(!original.isFile()) {
throw new IOException("找不到路径");
}
if(size<0) {
throw new NumberFormatException();
}
//读取的文件流
FileInputStream fos = new FileInputStream(original);
//定义一个标识 表示每个分割的子列表
int i =1;
//第一个子元素
FileOutputStream fds = new FileOutputStream(directory.getPath()+"\\"+i+"小魂 - 关山酒.flac");
byte [] b = new byte[1024*1024*size];
int index = -1;
while((index = fos.read(b))!=-1) {
//写入
fds.write(b,0,index);
if(fos.available()!=0) {
i++;
fds = new FileOutputStream(directory.getPath()+"\\"+i+"小魂 - 关山酒.flac");
}
}
fos.close();
fds.close();
return i;
}
public long join(final File dir, final File target) throws IOException {
File [] fileList =dir.listFiles();
System.out.println(Arrays.toString(fileList));
byte [] b = new byte[10*1024*1024];
FileInputStream fos =null;
FileOutputStream fds = new FileOutputStream(target,true);
for(int i=0;i<fileList.length;i++) {
if(!fileList[i].isDirectory()) {
fos = new FileInputStream(fileList[i]);
while(true) {
int index=fos.read(b);
if(index==-1) {
break;
}
fds.write(b, 0, index);
fds.flush();
}
}
}
fos.close();
fds.close();
return target.getTotalSpace();
}
}
近期评论