日期:2014-05-20  浏览次数:20719 次

为什么结果不是预期 大虾请指教 谢谢
这是我写的用字符流读文件的两个方法。。读的文件是这样的
,   ./!+-*/%()[]{}$ <> <> <>
\> < :; ' "
文件第一行第二个字符是空格,第二行第四个字符是制表
我的目的是干掉所有的空格类字符,然后把文件读成一个StringBuffer字符串,但是结果不是我的预期,在干掉第一行末尾的换行之后   第二行的字符直接刷在了字符串的开头几个位置。运行结果如下
\> <           :; ' "]{}$ <> <> <>

但是他的长度确在不断的增加。。
n===34
这是我想不明白的地方。。。

实现代码是下面的  
下面是两个方法     望高手指教   ~!!   谢谢
public   void   lexer(File   newfile)
{
try{
FileReader   in=new   FileReader(newfile);
int   n=0;
Character   a= '0 ';
//char   a= '0 ';
StringBuffer   s=null;
while((n=in.read())!=-1)
{
a=(char)n;
if(a.compareTo( '   ')==0||a.compareTo( '\n ')==0||a.compareTo( '\t ')==0)
{
System.out.println( "a=== "+a);
}
else
{
s=link(s,a);

}
System.out.println(s);
}
in.close();
}
catch(IOException   e){
System.out.println(e);
}
}
public   StringBuffer   link(StringBuffer   s1,Character   newa)
{
String   s2=Character.toString(newa);
StringBuffer   s3=new   StringBuffer(s2);
if(s1==null)
{
s1=s3;
}
else
{
s1=s1.append(s3);
}
System.out.println(s1.length());
//System.out.println(s1);
return   s1;
}

------解决方案--------------------
用正则表达式吧!
贴一下你的输入和你期望的输出。
------解决方案--------------------
在windows中,换行符是\r\n
这里if(a.compareTo( ' ')==0||a.compareTo( '\n ')==0||a.compareTo( '\t ')==0) 应该再加上一个条件:a.compareTo( '\r ')
------解决方案--------------------
mark