博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件操作的一些疑问
阅读量:6070 次
发布时间:2019-06-20

本文共 3228 字,大约阅读时间需要 10 分钟。

这些是自己零散的时间写的,比较乱

合并两个txt文件

我们先来看看最简单的使用合并流SequenceInputStream的方式进行操作

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package 
File;
 
/**
 
* 将两个txt文件合并为一个txt文件
 
* */
import 
java.io.File;
import 
java.io.FileInputStream;
import 
java.io.FileOutputStream;
import 
java.io.IOException;
import 
java.io.InputStream;
import 
java.io.OutputStream;
import 
java.io.SequenceInputStream;
 
public 
class 
FileDemo436{
    
public 
static 
void 
main(String[] args) 
throws 
IOException{
        
File file1 = 
new 
File(
"d:" 
+ File.separator + 
"hello1.txt"
);
        
File file2 = 
new 
File(
"d:" 
+ File.separator + 
"hello2.txt"
);
        
File file3 = 
new 
File(
"d:" 
+ File.separator + 
"hello3.txt"
);
        
InputStream input1 = 
new 
FileInputStream(file1);
        
InputStream input2 = 
new 
FileInputStream(file2);
        
OutputStream output = 
new 
FileOutputStream(file3);
        
SequenceInputStream se = 
new 
SequenceInputStream(input1, input2);
        
int 
temp = 
0
;
        
while
((temp = se.read()) != -
1
){
            
output.write(temp);
        
}
        
input1.close();
        
input2.close();
        
output.close();
        
se.close();
    
}
}

读者可以自行测试,之后会发现在hello3.txt文件中包含了之前两个文件的全部内容。

对于文本文件完全正确,但是当我测试将上面的文本文件改为word的时候却出现错误,

笔者将上面代码部分的:

1
2
3
File file1 = 
new 
File(
"d:" 
+ File.separator + 
"hello1.txt"
);
File file2 = 
new 
File(
"d:" 
+ File.separator + 
"hello2.txt"
);
File file3 = 
new 
File(
"d:" 
+ File.separator + 
"hello3.txt"
);

改为:

1
2
3
File file1 = 
new 
File(
"d:" 
+ File.separator + 
"1.docx"
);
File file2 = 
new 
File(
"d:" 
+ File.separator + 
"2.docx"
);
File file3 = 
new 
File(
"d:" 
+ File.separator + 
"3.docx"
);

文件1.docx中内容为11111,文件2.docx中内容为22222

但是程序产生的3.docx当我打开的时候出现:

当我单独将上面的:

File file3 =
new 
File(
"d:" 
+ File.separator +
"3.docx"
);

改为:

1
File file3 = 
new 
File(
"d:" 
+ File.separator + 
"3.txt"
);

时候,产生的txt文件内容为:

各种乱码,我不太清楚为什么错,不知道那位大牛知道,麻烦指教一下.

但是一般才有jacob操作这类办公软件,我以后会给出专门一篇文章,举例说明如何使用jacobjacob也就是java-com桥,你可以在http://sourceforge.net/projects/jacob-project/下载

 

上面的例子合并的是2txt文件,但是有时候需要合并很多的txt文件。

这个以合并3txt文件为例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package 
File;
 
/**
 
* 将两个txt文件合并为一个txt文件
 
* */
import 
java.io.File;
import 
java.io.FileInputStream;
import 
java.io.FileOutputStream;
import 
java.io.IOException;
import 
java.io.InputStream;
import 
java.io.OutputStream;
import 
java.io.SequenceInputStream;
import 
java.util.Vector;
 
public 
class 
FileDemo436{
    
public 
static 
void 
main(String[] args) 
throws 
IOException{
        
File file1 = 
new 
File(
"d:" 
+ File.separator + 
"1.txt"
);
        
File file2 = 
new 
File(
"d:" 
+ File.separator + 
"2.txt"
);
        
File file3 = 
new 
File(
"d:" 
+ File.separator + 
"3.txt"
);
        
File file4 = 
new 
File(
"d:" 
+ File.separator + 
"4.txt"
);
        
Vector<InputStream> vec = 
new 
Vector<InputStream>();
        
InputStream input1 = 
new 
FileInputStream(file1);
        
InputStream input2 = 
new 
FileInputStream(file2);
        
InputStream input3 = 
new 
FileInputStream(file3);
        
vec.add(input1);
        
vec.add(input2);
        
vec.add(input3);
        
OutputStream output = 
new 
FileOutputStream(file4);
        
SequenceInputStream se = 
new 
SequenceInputStream(vec.elements());
        
int 
temp = 
0
;
        
while
((temp = se.read()) != -
1
){
            
output.write(temp);
        
}
        
input1.close();
        
input2.close();
        
output.close();
        
se.close();
    
}
}

运行结果:

验证无误。

依照上面的例子的思想,当需要合并多个文件的时候,采用集合类将这些添加到集合中,最后使用合并流进行合并,当然也可以用最传统的办法,一个一个文件的读,边读边写。

转载地址:http://yibgx.baihongyu.com/

你可能感兴趣的文章
去除报表参数动态下拉列表框中的Null Value
查看>>
你所遗漏的SpringBoot日志管理知识
查看>>
Java架构师学习路线图
查看>>
MySQL数据库复制概论
查看>>
网吧行业遭到DDOS功击该怎么办?
查看>>
正则辅助工具
查看>>
MongoDB:使用explain()和Index Usage(第2部分)调查查询
查看>>
单片机最小系统-基于LPC1114
查看>>
直面升职加薪,最高效学习营——TMBA线上营等你来战!
查看>>
JVM 中的栈思考
查看>>
死磕 java集合之HashSet源码分析
查看>>
Android原生与H5交互方式
查看>>
Delphi 常用API函数
查看>>
修改或隐藏IIS7.5的Server头信息
查看>>
Exchange Server 2007的即将生命周期,您的计划是?
查看>>
使用star rating星级评分
查看>>
思科设备snmp配置。
查看>>
Java Default Timezone Issue Under Linux
查看>>
争分夺秒:阿里实时大数据技术全力助战双11
查看>>
Nat和路由的区别
查看>>