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;
}
}
}