文件操作的一些疑问

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

合并两个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操作这类办公软件,我以后会给出专门一篇文章,举例说明如何使用jacob。jacob也就是java-com桥,你可以在http://sourceforge.net/projects/jacob-project/下载

 

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

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


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();

    }

}

运行结果:

验证无误。

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

时间: 2024-08-04 08:56:32

文件操作的一些疑问的相关文章

FSO组件之文件操作

fso FSO中除了可以对驱动器.文件夹的操作以外,功能最强大的就是对文件的操作了.它可以用来记数.内容管理.搜索还可生成动态HTML页面等等. 一.fso.OpenTextFile 无需多说,fso.OpenTextFile就是打开某个文件了,一般情况之下是打开的txt文本文件.所以首先我们先建立一个txt文件,然后通过FSO来读取其中的内容. 1,info.txt name:cnbrucesex:male 建立了该文件,下面再做个ASP页面,当然最好两个文件是在同一目录下. 2,opentx

深入学习ASP动态网页技术之FSO组件之文件操作

fso|动态|网页 FSO中除了可以对驱动器.文件夹的操作以外,功能最强大的就是对文件的操作了.它可以用来记数.内容管理.搜索还可生成动态HTML页面等等. 一.fso.OpenTextFile无需多说,fso.OpenTextFile就是打开某个文件了,一般情况之下是打开的txt文本文件.所以首先我们先建立一个txt文件,然后通过FSO来读取其中的内容. 1,info.txt name:cnbrucesex:male 建立了该文件,下面再做个ASP页面,当然最好两个文件是在同一目录下. 2,o

FSO组件之文件操作(中)

学会了FSO提取文件值,也学会了将信息输入到文件中,那下面就再来应用应用下. 不知道你有没有这样的习惯:看到一个文件,不自觉的右键选择用记事本打开.呵呵,几乎没有哪个文件是不可以的.所以现在,可以默认所有文件都是文本,只是后缀名不同而已:那么也就是说,现在可以提取任一文件的内容信息.OK,就来想象一下: 1,提取一个文件的路径(采用file按钮进行查找定位) 2,将该路径文件打开,并读取所有行 3,显示读取的信息 一.viewcode.asp <%Function ShowCode(filena

Linux中RPM文件操作的常用命令总结_Linux

简介 众所周知在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的"添加/删除程序",但是功能又比"添加/删除程序"强很多,它就是Red Hat Package Manager(简称RPM).本文介绍的就是关于Linux中RPM文件操作的常用命令,下面话不多说,来一起看看吧. 一.RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv e

ASP编程入门进阶(十八):FSO组件之文件操作(中)_ASP基础

学会了FSO提取文件值,也学会了将信息输入到文件中,那下面就再来应用应用下. 不知道你有没有这样的习惯:看到一个文件,不自觉的右键选择用记事本打开.呵呵,几乎没有哪个文件是不可以的.所以现在,可以默认所有文件都是文本,只是后缀名不同而已:那么也就是说,现在可以提取任一文件的内容信息.OK,就来想象一下: 1,提取一个文件的路径(采用file按钮进行查找定位)2,将该路径文件打开,并读取所有行3,显示读取的信息 一.viewcode.asp <%Function ShowCode(filename

Node.js中常规的文件操作总结_node.js

前言 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node 导入文件系统模块(fs)语法如下所示: var fs = require("fs") fs模块是文件操作的封装,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX文件系统操作.与其他模块不同的是,fs模块中所有的操作都提供了异步和同步的两个版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync() . 一. 目录操作 1. 创建目录 创

针对Excel表格文件操作的编程实现

简介 通过本文及配套示例源码你可以更加灵活的控制Excel表格文件,其中包括创建新Excel文件.写入表格数据.读取表格数据(包括对原建Excel文件自已手工添加的行.列数据的准确读取),删除已有Excel表格,对表格中指定行.列.单元格进行查询.插入.替换等操作,同时还可以将生成的Excel文件转换为按指定分隔符分隔的其它文本格式的文件.下面是把此方法用VC6编写的示例程序运行效果: 基本思路 基础实现方法同上篇文章<直接通过ODBC读.写Excel表格文件>相同,都是通过ODBC来把Exc

python文件操作之目录遍历实例分析

  本文实例讲述了python文件操作之目录遍历的方法.分享给大家供大家参考.具体分析如下: Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数: os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os.curdir:返回当前目录('.') os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回fals

PHP教程:PHP的目录操作和文件操作

一.引论 在任何计算机设备中,文件是都是必须的对象,而在web编程中,文件的操作一直是web程序员的头疼的地方,而,文件的操作在cms系统中这是必须的,非常有用的,我们经常遇到生成文件目录,文件(夹)编辑等操作,现在我把php中的这些函数做一详细总结并实例示范如何使用.,关于对应的函数详细介绍,请查阅php手册.此处只总结重点.和需要注意的地方.(这在php手册是没有的.) 二.目录操作 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是