У меня есть файл, в котором лежат тексты, разделенные символами ***, примерно вот так:
Текст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) ложно
. Похоже, я где-то очень жестко ступил. Что я делаю неправильно?