多行到单行

时间:2012-06-23 06:26:40

标签: java java-ee

FileReader f0 = new FileReader("1.html");
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(f0);
while((temp1=br.readLine())!=null)
{
sb.append(temp1);
}
String para = sb.toString().replaceAll("<br>","\n");
String textonly = Jsoup.parse(para).text();
System.out.println(textonly);

FileWriter f1=new FileWriter("1.txt");
char buf1[] = new char[textonly.length()];
textonly.getChars(0,textonly.length(),buf1,0);

for(i=0;i<buf1.length;i++)
 {
 if(buf1[i]=='\n')
  f1.write("\r\n");
 f1.write(buf1[i]);

在创建新文本文件时,此代码生成多行,我希望文本文件只有一行。我怎么能这样做。

3 个答案:

答案 0 :(得分:2)

停止在文件中写入换行符\ n,你应该停止制作多行。

答案 1 :(得分:0)

不是&lt; \ br&gt;和\ n同样的事情?如果你这样做,你的文字就不会有变化。 您需要替换&lt; \ br&gt;有空间。

String para = sb.toString().replaceAll("<br>"," ");

答案 2 :(得分:0)

  

即使在删除所有\ n后,它会生成多行。

我认为错误在以下代码中:

for( i = 0; i < buf1.length; i++ )
{
     if( buf1[ i ] == '\n' )
         f1.write( "\r\n" );
     f1.write( buf1[ i ] );

当匹配换行符\n时,您正在将\r\n写入该文件,并再次使用f1.write( buf1[ i ] )将相同的字符输入该文件。使用else将停止再次向文件写入\n

for( i = 0; i < buf1.length; i++ )
{
     if( buf1[ i ] == '\n' )
     {
         f1.write( "\r\n" );
     }
     else
     {
         f1.write( buf1[ i ] );
     }
     // ...
} // for

或者使用三元运算符在写入时用\n替换\r\n

f1.write( buf1[ i ] == '\n' ? "\r\n" : buf1[ i ] );