Показать сообщение отдельно
Старый 29.11.2008, 00:23   #1
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 638 пользователей)
Вопрос Парадоксальная строка

У меня есть файл, в котором лежат тексты, разделенные символами ***, примерно вот так:

Текст1
***
Текст2
***
Текст3

Мне нужно считать тексты и поместить их в массив строк. Я делаю это так:
Texts = LoadFile(getClass().getResourceAsStream("/1.dat"),"***");
Где Texts - это массив строк.

Вот функция LoadFile:
public static String[] LoadFile(InputStream is, String parser)
{
 Vector punkts = new Vector();
 String s;
 StringBuffer sb = new StringBuffer();
 do
 {
  s=readline(is);
  if (s.length()==0) break;
  if (s==parser)
  {
   punkts.addElement(sb.toString());
   sb=new StringBuffer();
  }
  else{sb.append(s);}
 }
 while (true);
 try{is.close();}catch(Exception ex1){}
 String[] p=new String[punkts.size()];
 for (int i=0; i<punkts.size(); i++)
 punkts.copyInto(p);
 return p;
}
а вот readline:
public static String readline(InputStream is)
{
 StringBuffer sb = new StringBuffer();
 int c;
 try{
  boolean z=true;
  while (z)
  {
   c=is.read();
   if (c==13 || c==-1)
   {
    z=false;
    is.skip(1);
   }else{sb.append((char)c);}
  }
 }catch(Exception ex){return sb.toString();}
 return sb.toString();
}
Проблема в том, что условие (s==parser) НИКОГДА не выполняется. Однако, в дебаггере видно, что есть моменты, когда s="***" и parser="***", но при этом условие (s==parser) ложно . Похоже, я где-то очень жестко ступил. Что я делаю неправильно?
(Offline)
 
Ответить с цитированием