欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 内存操作流实现文件合并

程序员文章站 2024-01-18 20:46:40
...

注意: 内存流的好处

如果只是使用InputStream类, 在进行数据完整读取的时候会存在缺陷, 那么结合内存流会好很多, 但是这是上世纪的使用
这类的操作随着开发技术的不断发展, 已经出现的少了

代码实现

package com.cwq.beyond;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class TestDemo01 {
	public static void main(String[] args) throws IOException {
		 File file [] = new File[] {
				 new File("D:" + File.separator + "data-a.txt"),
				 new File("D:" + File.separator + "data-b.txt")
		 };
		 String data[] = new String[2];  // 定义一个字符串的对象数组
		 for(int x = 0; x< file.length ; x++) {
			 data[x] = readFile(file[x]);  // 读取数据
		 }
		 
		 StringBuffer buf = new StringBuffer();  // 组合操作
		 String contentA [] = data[0].split(" "); // 根据空格拆分
		 String contentB [] = data[1].split(" "); // 根据空格拆分
		 OutputStream output = new FileOutputStream(new File("D:"+ File.separator+"AB.txt"));
		 
		 for (int x = 0; x < contentA.length; x++) {
			String str = contentA[x] + "(" +contentB[x] +")";
			output.write(str.getBytes());  
			buf.append(contentA[x]).append("(").append(contentB[x]).append(")").append(" ");
		}
		 System.out.println(buf);
		 
		 
	}
	
	
	/**
	 * 如果要读取文件的内容最好传递File类对象, 因为这个对象一定会包含完整路径
	 * @param file
	 * @return 返回文件的内容
	 * @throws IOException 
	 */
	public static String readFile(File file) throws IOException {
		if (file.exists()) {
			InputStream input = new FileInputStream(file);
			// 这里面没有向上转型 ,因为toByteArray()属于子类扩充的方法
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			byte data [] = new byte[10];
			int temp = 0;
			while ((temp = input.read(data)) != -1) {  // 内容都在内存流
				bos.write(data, 0, temp);
			}
			bos.close();
			input.close();
			return new String(bos.toByteArray());  // 将读取的内容返回
		}
		else {
			return null;
		}
	}
}

Java 内存操作流实现文件合并

Java 内存操作流实现文件合并