Maneiras alternativas de abrir um arquivo para escrever no J2ME?
Pergunta
Eu herdei um pouco de código J2ME, onde uma única classe tem os dois métodos a seguir:
public DataOutputStream getOutputStream(String filePath) throws IOException
{
return Connector.openDataOutputStream(filePath);
}
public DataOutputStream createOutputStream(String filePath) throws IOException
{
FileConnection fc = (FileConnection)Connector.open(filePath);
if(fc.exists())
return fc.openDataOutputStream();
else
fc.create();
return fc.openDataOutputStream();
}
Até onde eu sei, esses dois métodos fazem exatamente a mesma coisa. Estranhamente, os métodos estão próximos um do outro na classe, implicando que quem os colocou lá sabia o que estavam fazendo.
Esses métodos são essencialmente os mesmos? Posso me livrar de um deles? (Ou provavelmente ambos, pensando nisso).
Solução
Parece -me que getOutputStream
lançará uma exceção se o arquivo não existir.
Você só pode se livrar disso se ninguém confiar nesse comportamento.
A refatoração usual nessa situação seria ter um parâmetro booleano adicional para createOutputStream
para que ele saiba se deve criar o arquivo se ainda não existir.
Outras dicas
FileConnector está disponível em um pacote opcional Somente, para que você não possa confiar em sua existência.