Какво се опитвам да направя: Използвайки OpenCSV, напишете метод, който ще ми позволи да получа информация от определена колона в CSV. Този CSV (на практика) ще има само два реда: заглавен ред и един ред с информация. Трябва да взема определени битове и да ги манипулирам, за да ги поставя в друг CSV (но не съм стигнал дотам).
Проблемът: Всеки път, когато извикам този метод, той се премества с един ред надолу. Пример: Търся ID на продукта и той връща ID на продукта на ред 2, което е добре. След това го стартирам отново и търся описанието и то връща описанието на ред 3. Не е добре. Стартирайте го отново и той намира правилната колона на ред 4. Отново не е добре. Винаги ще трябва да гледам само ред 2. Имам чувството, че отговорът е много прост, но не го виждам.
public class Application {
public static String ItemNabber(String item, CSVReader reader, String [] headerLine) throws IOException {
String passedItem = null;
try {
for (int i = 0; i < headerLine.length; i++){
if (headerLine[i].equals(item)) //customize name
{
String [] itemFound = reader.readNext();
System.out.println(itemFound[i]);
passedItem = itemFound[i];
itemFound = null;
}
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return passedItem;
}
public static void main(String[] args) throws IOException {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter myFilter = new FileNameExtensionFilter("Text Files", "txt", "csv");
chooser.setFileFilter(myFilter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getAbsolutePath());
}
String filePath = String.format(chooser.getSelectedFile().getAbsolutePath());
CSVReader reader = new CSVReader(new FileReader(filePath), '|');
String [] headerLine = reader.readNext();
ItemNabber("PRODID", reader, headerLine);
ItemNabber("DESCR", reader, headerLine);
В този пример той намира правилния PRODID, но се плъзга надолу по ред, за да намери описанието.
Благодаря предварително!