好的,这是第一个文件heavy1.rtf的内容:
> hello, this
>is
>a
> ?new EJava program
>
> C:\ heavy1.rtf 500
这是第一个文件heavy2的内容:
>first line
>2nd line
>more line
>enough is enough
>eNd
heavy1和heavy2是使用另一个java程序创建的。 heavy3是手工制作的,看起来像这样:
> fsd
>fd
>sdf
>sdfsd
然后我运行了这段代码:
import java.io.*;
import java.util.*;
public class newfile3
{
public static void main(String[] args)
{
int x=500;
File f1 = new File("C:/ heavy1.rtf");//file already exists
File f2 = new File("C:/ heavy2.rtf");//file already exists
File f3 = new File("C:/heavy3.rtf");//file already exists
File f4 = new File("C:/ heavymerge.rtf");//does not exist
try
{
FileInputStream str1 = new FileInputStream(f1);
FileInputStream str2 = new FileInputStream(f2);
FileInputStream str3 = new FileInputStream(f3);
SequenceInputStream qstr = new SequenceInputStream(new SequenceInputStream(str1,str2),str3);
Scanner sc = new Scanner(qstr);
PrintWriter pw = new PrintWriter(f4);
while(sc.hasNextLine())
{
pw.println(sc.nextLine());
}
qstr.close();
pw.close();
sc.close();
sc = new Scanner(f4);
while(sc.hasNextLine())
{
System.out.println(sc.nextLine());
}
sc.close();
}
catch(Exception ex){}
}
}
所以它确实从3个文件中读取并将它们合并到heavymerge.rtf中。问题是在第一行之前有一个额外的空间。比如
first line
2nd line
此外,重3以bizzarre方式合并。 它以
开头{\ rtf1 \ ansi \ deff0 {\ fonttbl ... etc
并打印主要内容,如
sdf\par
sdfsd\par
}
...
有没有办法可以阻止这些额外的空间并且更精确。 除了SequenceInputStream之外,还有其他链接和连接选项吗? 如果我想要删除文件的部分怎么办?似乎没有任何退格。