2013-12-17 2 views
0

У меня есть файл с разделителями табуляции, который я хочу разделить на вкладки и строки новой строки, где вкладка представляет разделитель между полями, а новая строка представляет новый объект, который должен быть создан. Файл может выглядеть следующим образом:Как разбить строку на вкладки и символы новой строки?

Peter\[email protected]\tpeterpassword\nBob\[email protected]\tbobbypassword\n...

где \t вкладка и \n является символом новой строки.

Я хочу включить загрузку этого файла в свою программу, которая создает нового пользователя для каждой строки в файле с полями в строке. Но как я могу использовать два токена - как tab, так и новую строку? Мой код будет выглядеть примерно так:

String everything = ""; 
BufferedReader br = null; 
try { 
    br = new BufferedReader(new InputStreamReader(file.getInputStream())); 
    StringBuilder sb = new StringBuilder(); 
    String line = br.readLine(); 

    while (line != null) { 

     //now create object according to the string 
     StringTokenizer st = new StringTokenizer(line , "\t");  
     String name = st.nextToken(); 
     String email = st.nextToken(); 
     String password = st.nextToken(); 
     User.createNewUser(name, email, password); 

     sb.append(line); 
     sb.append('\n'); 
     line = br.readLine(); 
    } 
    everything = sb.toString(); 
    br.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
System.out.println("Everything: " + everything); 

Будет ли код подобным выше работать?

+0

Протестируйте его и выясните. – MadConan

+0

и FYI: StringTokenizer может принимать несколько токенов. – MadConan

+0

Почему бы вам не попробовать и не дать нам знать! – Bohemian

ответ

2

Я бы сделал String.split("\\n") для каждой линии. Затем у вас есть вся необходимая информация для каждого пользователя. Сделайте еще один String.split("\\t") и постройте свой объект с помощью полученного массива.

От Doc Java:

StringTokenizer является наследием класс, который сохраняется в целях совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется, чтобы любой, кто ищет эту функциональность, использовал метод split для String или пакет java.util.regex.

http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

Смежные вопросы