使用Scanner和SequenceInputStream的连接字段的额外空间

时间:2014-12-31 20:05:35

标签: java file inputstream java.util.scanner printwriter

好的,这是第一个文件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之外,还有其他链接和连接选项吗? 如果我想要删除文件的部分怎么办?似乎没有任何退格。

0 个答案:

没有答案