2015-06-04 8 views
0

Я действительно застрял в этом. Мне интересно, можно ли исключить все элементы из arraylist при чтении файла? Заранее спасибо!Java ArrayList и FileReader

У меня есть элементы на моей ArrayList (excludelist), как это:

test1 
test2 
test3 

И у меня есть CSV данные о моем файле (readtest), как это:

test1,off 
test2,on 
test3,off 
test4,on 

так, что я ожидал чтобы исключить все данные из ArrayList в то время как цикл, то будет выводиться следующим образом:

test4, на

Это мой код:

String exclude = "C:\\pathtomyexcludefile\\exclude.txt";  
String read = "C:\\pathtomytextfile\\test.txt"; 

        File readtest = new File(read); 
        File excludetest = new File(exclude); 

        ArrayList<String> excludelist = new ArrayList(); 
        excludelist.addAll(getFile(excludetest)); 

    try{ 
      String line; 
        LineIterator it = FileUtils.lineIterator(readtest,"UTF-8"); 
        while(it.hasNext()){ 
      line = it.nextLine(); 
      //determine here 

      } 
    catch(Exception e){ 
     e.printStackTrace(); 
     } 

    public static ArrayList<String> getFile(File file) { 
      ArrayList<String> data = new ArrayList(); 
      String line; 
       try{ 
       LineIterator it = FileUtils.lineIterator(file,"UTF-8"); 
        while(it.hasNext()){ 
         line = it.nextLine(); 
         data.add(line);  
       } 
        it.close(); 
       } 

          catch(Exception e){ 
       e.printStackTrace(); 
       } 
      return data; 
     } 
+0

Какая у вас проблема? Что вы сделали для отладки до сих пор? –

ответ

0

Если исключенные элементы аа String объектов, вы можете попробовать что-то вроде этого:

while(it.hasNext()){ 
    line = it.nextLine(); 
    for(String excluded : excludelist){ 
     if(line.startsWith(excluded)){ 
      continue; 
     } 
    } 
} 
1

Там может быть более эффективными способами сделать это, но вы можете проверить каждую строку, которую вы читаете, используя String.startsWith против каждого элемента в excludeList. Если строка не начинается с слова, которое должно быть исключено, добавьте его в список approvedLines.

String exclude = "C:\\pathtomyexcludefile\\exclude.txt";  
String read = "C:\\pathtomytextfile\\test.txt"; 

File readtest = new File(read); 
File excludetest = new File(exclude); 

List<String> excludelist = new ArrayList<>(); 
excludelist.addAll(getFile(excludetest)); 
List<String> approvedLines = new ArrayList<>(); 

LineIterator it = FileUtils.lineIterator(readtest, "UTF-8"); 

while (it.hasNext()) { 
    String line = it.nextLine(); 
    boolean lineIsValid = true; 
    for (String excludedWord : excludelist) { 
     if (line.startsWith(excludedWord)) { 
      lineIsValid = false; 
      break; 
     } 
    } 
    if (lineIsValid) { 
     approvedLines.add(line); 
    } 
} 

// check that we got it right 
for (String line : approvedLines) { 
    System.out.println(line); 
} 
+0

Я не могу это сделать, я не могу поместить строку в память. Здесь я читаю большой файл. – tuturyokgaming