import java.io.DataOutputStream;import java.io.File;
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;
public class Exam01{ /**
* 思路: 合并的过程:
* 1 用创建一个DataOutputStream的输入流。 * 2 向流中写出目录的名字和目录的文件的个数 3 将每个文件的名字和大小写入。每3步循环做。 4 关闭流.
用DataInputStream和DataOutputStream将目录下的文件,合并到一个新的文件abc.tar中 */
public static void main(String[] args) throws Exception {
//创建一个输出流
OutputStream out = new FileOutputStream(\"d:/abc.tar\"); //创建一个DataOutputStream流
DataOutputStream dout =new DataOutputStream(out); //得到目标目录
File src = new File(\"d:/abc\"); //得到src目录的绝对地址
String path = src.getAbsolutePath();
//得到src目录的文件个数根据数组的大小
File[] f = src.listFiles();//把目录下的所有的文件放在f这个数组里 int fileNums=f.length;
System.out.println(\"目录名为:\"+path+\里面的文件个数:\"+fileNums); //将src目录的地址和文件的个数写入到输出流中
dout.writeUTF(path); dout.writeInt(fileNums);
//得到src目录下的所有的文件的文件名字和大小写到流中 //在循环中,首先读取第一个文件的名字和大小, //将第一个文件的名字和大小,写入到dout流中 for(File fa:f){
String fileName =fa.getAbsolutePath(); long fileSize =fa.length();
System.out.println(\"文件名为:\"+fileName); System.out.println(\"大小为:\"+fileSize); dout.writeUTF(fileName); dout.writeLong(fileSize);
//以下请将当前文件的内容写入到dout中。 InputStream in = new FileInputStream(fa); //从流中读取一个字节 int i = in.read();
while(i!=-1){//不等于-1说明没有到流的末尾
System.out.println(\"读取:\"+fileName+\"的内容:\"+(char)i); dout.write(i);//将内容写入abc.tar i = in.read(); }
in.close();//关闭当前的输入流 }
dout.close();//关闭流
System.out.println(\"合并结束\"); }}
因篇幅问题不能全部显示,请点此查看更多更全内容