2013-06-23 7 views
0

Мне нужно прочитать поток. Этот поток преобразуется в String с буферизованным считывателем. при чтении этого потока для некоторых конкретных ключевых слов мне нужно дать конкретное сообщение. например: Если я обнаружил «Сетевая ошибка» при чтении потока, мне нужно указать «есть ошибка в соединении».Правильный способ чтения ключевых слов из потока

Но моя проблема в том, что есть 1000 с этих ключевых слов, тогда я должен написать 1000 с условий «если».

Я думаю, что мы не можем управлять файлом свойств, поскольку мы должны ссылаться на ключ. не такие слова, как «сетевая ошибка».

Есть ли надлежащий способ реализовать это без условий.

пожалуйста, ответьте мне

+1

Codes пожалуйста ??? –

+0

Ошибка сети

skdfkdfk

Фактически этот поток содержит html-ответ. – user2056989

ответ

0

Вы можете использовать HashMap<String,String> с ключом как key_words и значением как SPECIFIC_MESSAGE.

+0

Большое спасибо за ответ – user2056989

1

Эй, вам не нужен ни один файл недвижимости. Вы можете справиться с этим только Enumeration, HashMap. Что вы можете сделать, сначала создайте enum всех ключевых слов и конкретного сообщения в значении. У вас есть карта с перечислением и значение, которое вы хотите заменить. Итерации по ключевым словам и их замену, если они содержатся в потоке.

Вот пример кода, который может вам помочь.

KeyWordEnum.java

public enum KeyWordEnum{ 

NETWORK_ERROR; 

public String toString(){ 
    if(NETWORK_ERROR){ 
    return "Network Error"; 
    } 
} 
} 

Теперь в Test.java класса:

public String getReplacedStream(String stream){ 
Map<KeyWordEnum, String> keyWordMapWithValue = new HashMap<KeyWordEnum String>(); 
keyWordMapWithValue.put(KeyWordEnum.NETWORK_ERROR,"There is an error in connection"); 

// Replace all the keywords from the map. 

    for(KeyWordEnum key : keyWordMapWithValue.keySet()){ 
    if(stream.contains(key.toString())){ 
     stream.replaceAll(key.toString(), key.getValue()); 

    } 
    } 
    return stream; 
} 
+0

Да ... это он. –