2013-11-27 4 views
0
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Scanner; 


public class Cities { 

    public static void main(String[] args) throws IOException { 

     String filename; 
     System.out.println("Enter the file name : "); 
     Scanner kb = new Scanner(System.in); 
     filename = kb.next(); 

     //Check if file exists 
      File f = new File(filename); 

      if(f.exists()){ 

      //Read file 
      File myFile = new File(filename); 
      Scanner inputFile = new Scanner(myFile); 

      //Create arraylist object 
      ArrayList<String> list = new ArrayList<String>(); 

      String cit; 

      while(inputFile.hasNext()){ 
       cit = inputFile.toString(); 
       list.add(inputFile.toString()); 
      } 
      System.out.println(list); 

      }else{ 
       System.out.println("File not found!"); 
      } 
    } 
} 

Я пытаюсь прочитать файл и добавить содержимое к объекту arraylist (.txt файл содержит строки), но я полностью потерян. Любой совет?Сохранение строки из файла в объекте ArrayList?

+0

Я начинающий так пожалуйста, полегче! –

+0

Может ли кто-нибудь помочь? –

+1

Оценка шара разницы между Programmers.SE и StackOverflow заключается в том, что вы находитесь перед доской или средой IDE при решении проблемы. Если вы смотрите на доску (пытаясь выяснить алгоритм, шаблоны проектирования и т. Д.), То это, скорее всего, на P.SE. Если он находится в среде IDE, он, вероятно, лучше всего работает в StackOverflow. Ваш предыдущий вопрос был перенесен (автоматически перемещен) в SO, и этот тоже уже на пути (пожалуйста, не отправляйте сообщения). Для вопросов реализации (таких как это) SO, скорее всего, даст вам ответ намного быстрее, чем P.SE. –

ответ

2

Вы должны прочитать файл по одной строке на одну строку и сохранить его в списке.

Вот код, который вы должны заменить ваш while (inputFile.hasNext()):

Scanner input = null; 
try 
{ 
    ArrayList<String> list = new ArrayList<String>(); 
    input = new Scanner(new File("")); 
    while (input.hasNext()) 
     list.add(input.nextLine()); 
} 
finally 
{ 
    if (input != null) 
     input.close(); 
} 

И вы должны закрыть Scanner после чтения файла.

+0

Как насчет использования while и if циклов? Я не знаком с попыткой - наконец. –

+0

Хорошо, что я понял, спасибо за вашу помощь! –

+0

@ user104827 Синтаксис 'try ... finally ...' используется для закрытия 'Scanner'. –

0

Если вы используете Java 7+, то вы можете использовать Files#readAllLines(), чтобы сделать эту задачу для вас, а не вы пишете for или while петлю самостоятельно, чтобы прочитать файл строку за строкой.

File f = new File(filename); // The file from which input is to be read. 
ArrayList<String> list = null; // the list into which the lines are to be read 
try { 
    list = Files.readAllLines(f.toPath(), Charset.defaultCharset()); 
} catch (IOException e) { 
    // Error, do something 
} 
Смежные вопросы