2013-11-11 3 views
0

У меня есть следующий файл с именем ght.txt в моем C: и содержит следующие данныеЧтение трубы разделителями файл

Id|ytr|yts 
1|W|T 
2|W|T 
3|W|T 

Теперь дело в том, что позиции этих столбцов (Id | YTR | YTS) также не в порядке означает, что они могут быть перетасовал also..for экс

Id|ytr|dgfj|fhfjk|fgrt|yts 

или они могут быть как ..

Id|wer|ytr|weg|yts 

Теперь, пожалуйста, сообщите как я могу прочитать этот файл через буферизованный писатель в java, а также логику, чтобы поймать только этот столбец (Id | ytr | yts), поскольку мне нужно сначала поймать эти столбцы, а затем нужно сохранить значение столбцов на карте.

Пожалуйста посоветуйте

ответ

0

Это первая линия, которая обеспечивает информацию о позиционировании,

String[] headers = firstLine.split("|"); 
int idIx, ytrIx, ytsIx, count = 0; 
for(String header : headers) { 
if(header.equals("Id")) { 
    idIx = count; 
}elseif (header.equals("ytr")) { 
    ytrIx = count; 
} elseif (header.equals("yts")) { 
    ytsIx = count; 
} 
count++; 
} 

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

ПРИМЕЧАНИЕ: Если используется Java7, используйте switch-case над заголовком, если числовые заголовки больше, вы можете также использовать HashMap для отображения индекса заголовка.

0

Вы можете использовать Commons CSV и указать трубу в качестве разделителя для загрузки данных, затем она позволит вам получить доступ к данным based on header name, чтобы избавить вас от необходимости выполнять «переключение».

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