您的当前位置:首页正文

合并文件

2024-05-01 来源:欧得旅游网
package exam;

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(\"合并结束\"); }}

因篇幅问题不能全部显示,请点此查看更多更全内容