Альтернативные способы открыть файл для записи на J2ME?
Вопрос
Я унаследовал немного кода J2ME, где в одном классе есть следующие два метода:
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();
}
Насколько я могу судить, эти два метода делают в точности одно и то же.Как ни странно, методы находятся прямо рядом друг с другом в классе, подразумевая, что тот, кто их туда поместил, знал, что делал.
Являются ли эти методы по существу одинаковыми?Могу ли я избавиться от одного из них?(Или, вероятно, и то, и другое, думая об этом).
Решение
Мне кажется , что getOutputStream
выдаст исключение, если файл не существует.
Вы можете избавиться от этого, только если никто не будет полагаться на такое поведение.
Обычный рефакторинг в этой ситуации заключался бы в добавлении логического параметра к createOutputStream
чтобы сообщить ему, следует ли создавать файл, если он еще не существует.
Другие советы
FileConnector доступен в дополнительный пакет только для того, чтобы вы не могли полагаться на его существование.