第1关:练习-Java输入输出之文件字节IO流之合并文件
任务描述
本关任务:把给定的多个文件合并成一个文件。
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,把给定的多个文件合并成一个文件。具体要求如下:
- 接收给定的一行字符串(如:/test,a.txt。其中逗号前为一个目录,该目录下存储着子文件,逗号后为目标文件,用于存储各子文件合并的内容;
- 把给定目录下的所有子文件的内容合并到目标文件中;
- 输出目标文件大小,示例:“最后目标文件的大小:X字节”;
- 给定子文件的命名规则:假如目标文件为 a.txt,则子文件为 a.txt-1、a.txt-2、...、a.txt-n。
注意:请按照子文件后缀数字按照从小到大依次合并到目标文件。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
例: 测试输入:
/test/,a.txt
预期输出(第一行为编程要求中要求输出的提示语句,后面为后台使用 cat 命令查看目标文件产生的结果):
最后目标文件的大小:31字节
888hy67
ddsljcnjf746
howtodoit
注意:最后有一个空行。
开始你的任务吧,祝你成功!
源代码:
import java.io.*;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in); // 获取给定字符串
String s = scanner.nextLine();
// 请在Begin-End间编写完整代码
/********** Begin **********/
// 切割给定字符串,得到子文件目录和目标文件名
String[] array = s.split(",");
// 循环读取子文件内容,写入到目标文件
File file1 = new File(array[0]);
File file2 = new File(array[1]);
FileOutputStream fileOutputStream = new FileOutputStream(file2);
for (int i = 1; i < file1.listFiles().length; i ++){
FileInputStream fileInputStream = new FileInputStream(array[0] + "/" + array[1] + "-" + i);
int len = 0;
while((len = fileInputStream.read()) != -1)
fileOutputStream.write(len);
}
fileOutputStream.close();
// 输出目标文件大小
System.out.println("最后目标文件的大小:" + file2.length() + "字节");
FileReader fileReader = new FileReader(array[1]);
int lenx = 0;
while((lenx = fileReader.read()) != -1){
System.out.print((char)lenx);
}
fileReader.close();
/********** End **********/
}
}