2009-08-27 3 views
1

Я унаследовал немного кода 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(); 
} 

Насколько я могу судить, эти два метода делают точно то же самое. Причудливо, методы находятся рядом друг с другом в классе, подразумевая, что тот, кто их положил, знал, что они делают.

Являются ли эти методы по существу одинаковыми? Могу ли я избавиться от одного из них? (Или, возможно, оба, думая об этом).

ответ

1

Мне кажется, что getOutputStream выдаст исключение, если файл не существует.

Вы можете избавиться от него, если никто не полагается на это поведение.

Обычный рефакторинг в этой ситуации будет иметь добавленный логический параметр до createOutputStream, чтобы он знал, должен ли он создать файл, если он еще не существует.

+0

+1 хорошо иметь гибкий метод –

0

FileConnector доступен только в optional package, поэтому вы не можете рассчитывать на его существование.

+0

Я должен был сказать, что filePath всегда является «file: //» url. – izb