---------------------- android培训、java培训、期待与您交流! ----------------------
通过今天的学习,做了一个比较简陋的,分解文件的方法.
虽然只能让暂时只能自己用,但是我相信不久的将来我就可以做出能和大家分享的小东西.
下面是我做的代码.
记在这里还是很方便以后在网上复制的.
package cn.itcast.day17.Sequence;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class SequenceDemo {
public static void main(String[] args) throws IOException {
System.out.println("请输入一个你要分解的音乐文件!");
File file = new File(
new BufferedReader(new InputStreamReader(System.in)).readLine());
String fileName = file.getName();
String extendName = fileName.substring(fileName.lastIndexOf("."));
long fileLen = file.length();
System.out.println("音乐一共多少秒");
Scanner sc = new Scanner(System.in);
int tatolLen = sc.nextInt();
System.out.println("从第几秒开始:");
Scanner sc1 = new Scanner(System.in);
long startLen = (long) (fileLen * sc1.nextInt() / tatolLen);
System.out.println("到第几秒结束:");
Scanner sc2 = new Scanner(System.in);
long endLen = (long) (fileLen * sc2.nextInt() / tatolLen);
File dir = new File("temp");
dir.mkdir();
int fileNum = 1;
int len = 0;
int b;
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(
dir, fileNum + extendName)));
while ((b = bis.read()) != -1) {
bos.write(b);
if (++len == startLen || len == endLen) {
bos.close();
bos = new BufferedOutputStream(new FileOutputStream(new File(dir,
++fileNum + extendName)));
}
}
bis.close();
bos.close();
file.delete();
dir.renameTo(file);
}
}
当然还可以还原回来.做了以下的代码.
package cn.itcast.day17.Sequence;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
public class Sequence2Demo {
public static void main(String[] args) throws IOException {
System.out.println("请输入要合并的文件夹路径: ");
File dir = new File(new BufferedReader(new InputStreamReader(System.in)).readLine());
File dest = new File("temp");
File[] files = dir.listFiles();
ArrayList<FileInputStream> list = new ArrayList<FileInputStream>();
for (File file : files)
list.add(new FileInputStream(file));
Enumeration<FileInputStream> e = Collections.enumeration(list);
SequenceInputStream sis = new SequenceInputStream(e);
FileOutputStream fos = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int len;
while((len = sis.read(buf)) != -1)
fos.write(buf, 0, len);
sis.close();
fos.close();
for (File file : files)
file.delete();
dir.delete();
dest.renameTo(dir);
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------
---------------------- android培训、java培训、期待与您交流! ----------------------