Сделать список из текстового файла в java?
У меня есть текстовый файл, полный чисел, и я хочу прочитать числа на Java, а затем составить список, который я могу сортировать. это было некоторое время, так как я использовал java, и я забываю, как это сделать.
текстовый файл выглядит примерно так:
4.5234
9.3564
1.2342
4.4674
9.6545
6.7856
Ответы
Ответ 1
Вы делаете что-то вроде этого.
EDIT: Я попытался реализовать изменения dbkk, упомянутые в его комментариях, поэтому код действительно будет правильным. Скажите, если у меня что-то не так.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ReadList {
public static void main(String[] args) throws IOException {
BufferedReader in = null;
FileReader fr = null;
List<Double> list = new ArrayList<Double>();
try {
fr = new FileReader("list.txt");
in = new BufferedReader(fr);
String str;
while ((str = in.readLine()) != null) {
list.add(Double.parseDouble(str));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
in.close();
fr.close();
}
for (double d : list) System.out.println(d);
}
}
Ответ 2
Вы можете использовать Scanner
в File
и использовать метод nextDouble()
или nextFloat()
.
Scanner scanner = new Scanner(new File("pathToYourFile"));
List<Double> doubles = new ArrayList<Double>();
while(scanner.hasNextDouble()){
doubles.add(scanner.nextDouble());
}
Collections.sort(doubles);
Ресурсы:
Ответ 3
Это действительно весело и просто, если вы используете Guava:
final File f = new File("your/file.txt");
final List<Float> listOfFloats =
Lists.transform(Files.readLines(f, Charset.defaultCharset()),
new Function<String, Float>(){
@Override
public Float apply(final String from){
return Float.valueOf(from);
}
});
И вот аналогичная версия, использующая Apache Commons/IO:
final File f = new File("your/file.txt");
final List<String> lines = FileUtils.readLines(f);
final List<Float> listOfFloats = new ArrayList<Float>(lines.size());
for(final String line : lines){
listOfFloats.add(Float.valueOf(line));
}
Ответ 4
Краткие инструкции без кода:
- Создайте
BufferedReader
для чтения из вашего файла.
- Итерируйте по всему файлу, считая строку за строкой
reader.readLine()
, пока readLine()
не вернет null
(== конец файла)
- Разбирайте каждую строку как
Float
или Double
(например, Float.valueOf(line)
или Double.valueOf(line)
- Добавьте объекты
Float
или Double
к ArrayList
.
Ответ 5
Не учитывая тот факт, что вам нужно настроить обработку исключений и на основе вашего кода окружения, он будет выглядеть примерно так:
BufferedReader br = new BufferedReader(new FileReader(new File("filename.txt")));
ArrayList<Double> ald = new ArrayList<Double>();
String line;
while(true)
{
line = br.readLine();
if(line == null) break;
ald.add(new Double(line));
}
Ответ 6
Используйте java.util.Scanner
:
public List<Doubles> getNumbers(String fileName) {
List<Double> numbers = new ArrayList<Double>();
Scanner sc = new Scanner(new File(fileName));
while (sc.hasNextDouble()) {
numbers.add(sc.nextDouble());
}
return numbers;
}