import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/*
* 将一个目录及其子目录想的所有txt类型的文本文件中
* 的内容合并到若干个新的文本文件中,当第一个新产生
* 的文件中存储的内容达到5kb时,剩下的内容存储到第二
* 个新的 文件中,一次往下,新产生的文本文件为1.txt,2.txt......
*/
public class FileUniteTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File dir = new File("first");
List<File> txtFiles = new ArrayList<File>();
getAllTxtFile(dir, txtFiles);
int size = txtFiles.size();
Long total = 0l;
for (int i = 0; i < size; i++) {
File txtFile = txtFiles.get(i);
total = total + txtFile.length();
}
System.out.println("qian total = " + total);
uniteFile(txtFiles);
}
public static void uniteFile(List<File> txtFiles) throws IOException {
int size = txtFiles.size();
FileInputStream inputStream = null;
int index = 1;
File file = new File(index + ".txt");
FileOutputStream outputStream = new FileOutputStream(file);
byte buf[] = new byte[1024];
for (int i = 0; i < size; i++) {
File txtFile = txtFiles.get(i);
inputStream = new FileInputStream(txtFile);
int len = -1;
while ((len = inputStream.read(buf)) != -1) {
if ((file.length()+len) < 5 * 1024) {
outputStream.write(buf, 0, len);
} else {
int left = (int)(5 * 1024 - file.length());
outputStream.write(buf, 0, left);
int nextLeft = len - left;
index++;
file = new File(index + ".txt");
outputStream = new FileOutputStream(file);
outputStream.write(buf, 0, nextLeft);
}
}
}
outputStream.flush();
outputStream.close();
System.out.println("----------------");
Long tt = 0l;
for(int i = 1; i<4;i++){
File f = new File(i + ".txt");
tt = tt + f.length();
}
System.out.println("tt = " + tt);
}
public static List<File> getAllTxtFile(File dir, List<File> txtFiles) {
if (!dir.exists()) {
System.out.println("文件目录不存在");
return null;
}
File files[] = dir.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
String fileName = file.getName();
if (fileName.endsWith("txt")) {
txtFiles.add(file);
} else if (file.isDirectory()) {
getAllTxtFile(file, txtFiles);
}
}
return txtFiles;
}
}
今天终于把传智播客张老师的io视频看完了,同时也把io作业完成,这是其中的一个作业,经本人测试,没有问题
再次感谢老师无私奉献,