Подтвердить что ты не робот

Java читает файл в ArrayList?

Как вы читаете содержимое файла в ArrayList<String> в Java?

Вот содержимое файла:

cat
house
dog
.
.
.

Просто прочитайте каждое слово в ArrayList.

4b9b3361

Ответ 1

Этот код Java читается в каждом слове и помещает его в ArrayList:

Scanner s = new Scanner(new File("filepath"));
ArrayList<String> list = new ArrayList<String>();
while (s.hasNext()){
    list.add(s.next());
}
s.close();

Используйте s.hasNextLine() и s.nextLine(), если вы хотите читать строки за строкой, а не слово за словом.

Ответ 2

Однострочный с commons-io:

List<String> lines = FileUtils.readLines(new File("/path/to/file.txt"), "utf-8");

То же самое с guava:

List<String> lines = 
     Files.readLines(new File("/path/to/file.txt"), Charset.forName("utf-8"));

Ответ 3

Вы можете использовать:

List<String> list = Files.readAllLines(new File("input.txt").toPath(), Charset.defaultCharset() );

Источник: Java API 7.0

Ответ 4

В Java 8 вы можете использовать потоки и Files.lines:

List<String> list = null;
try (Stream<String> lines = Files.lines(myPathToTheFile))) {
    list = lines.collect(Collectors.toList());
} catch (IOException e) {
    LOGGER.error("Failed to load file.", e);
}

Или как функция, включающая загрузку файла из файловой системы:

private List<String> loadFile() {
    List<String> list = null;
    URI uri = null;

    try {
        uri = ClassLoader.getSystemResource("example.txt").toURI();
    } catch (URISyntaxException e) {
        LOGGER.error("Failed to load file.", e);
    }

    try (Stream<String> lines = Files.lines(Paths.get(uri))) {
        list = lines.collect(Collectors.toList());
    } catch (IOException e) {
        LOGGER.error("Failed to load file.", e);
    }
    return list;
}

Ответ 5

Простейшая форма, которую я когда-либо находил, - это...

List<String> lines = Files.readAllLines(Paths.get("/path/to/file.txt"));

Ответ 6

List<String> words = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader("words.txt"));
String line;
while ((line = reader.readLine()) != null) {
    words.add(line);
}
reader.close();

Ответ 7

Вы можете, например, сделать это таким образом (полный код с помощью handlig исключений):

BufferedReader in = null;
List<String> myList = new ArrayList<String>();
try {   
    in = new BufferedReader(new FileReader("myfile.txt"));
    String str;
    while ((str = in.readLine()) != null) {
        myList.add(str);
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (in != null) {
        in.close();
    }
}

Ответ 8

//CS124 HW6 Wikipedia Relation Extraction
//Alan Joyce (ajoyce)
public List<String> addWives(String fileName) {
    List<String> wives = new ArrayList<String>();
    try {
        BufferedReader input = new BufferedReader(new FileReader(fileName));
        // for each line
        for(String line = input.readLine(); line != null; line = input.readLine()) {
            wives.add(line);
        }
        input.close();
    } catch(IOException e) {
        e.printStackTrace();
        System.exit(1);
        return null;
    }
    return wives;
}

Ответ 9

Здесь решение, которое сработало для меня очень хорошо:

List<String> lines = Arrays.asList(
    new Scanner(new File(file)).useDelimiter("\\Z").next().split("\\r?\\n")
);

Если вы не хотите пустые строки, вы также можете:

List<String> lines = Arrays.asList(
    new Scanner(new File(file)).useDelimiter("\\Z").next().split("[\\r\\n]+")
);

Ответ 10

Вот пример всей программы:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

public class X {
    public static void main(String[] args) {
    File f = new File("D:/projects/eric/eclipseworkspace/testing2/usernames.txt");
        try{
            ArrayList<String> lines = get_arraylist_from_file(f);
            for(int x = 0; x < lines.size(); x++){
                System.out.println(lines.get(x));
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("done");

    }
    public static ArrayList<String> get_arraylist_from_file(File f) 
        throws FileNotFoundException {
        Scanner s;
        ArrayList<String> list = new ArrayList<String>();
        s = new Scanner(f);
        while (s.hasNext()) {
            list.add(s.next());
        }
        s.close();
        return list;
    }
}

Ответ 11

Поделитесь информацией об анализе. С простой проверкой, сколько времени потребуется, чтобы прочитать ~ 1180 строк значений.

Если вам нужно быстро прочитать данные, используйте старый старый пример BufferedReader FileReader. Мне потребовалось ~ 8 мс

Сканер работает намного медленнее. Принял меня ~ 138 мс

Хорошая Java 8 Files.lines(...) - самая медленная версия. Принял меня ~ 388 мс.

Ответ 12

    Scanner scr = new Scanner(new File(filePathInString));
/*Above line for scanning data from file*/

    enter code here

ArrayList<DataType> list = new ArrayList<DateType>();
/*this is a object of arraylist which in data will store after scan*/

while (scr.hasNext()){

list.add(scr.next()); }/* приведенный выше код отвечает за добавление данных в массив с помощью функции add */

Ответ 13

Добавьте этот код для сортировки данных в текстовом файле. Collections.sort(list);