Вопрос-ответ

Java: How to read a text file

Java: как прочитать текстовый файл

Я хочу прочитать текстовый файл, содержащий значения, разделенные пробелами. Значения представляют собой целые числа. Как я могу прочитать это и поместить в список массивов?

Вот пример содержимого текстового файла:

1 62 4 55 5 6 77

Я хочу иметь его в arraylist как [1, 62, 4, 55, 5, 6, 77]. Как я могу это сделать на Java?

Переведено автоматически
Ответ 1

Вы можете использовать Files#readAllLines() для получения всех строк текстового файла в List<String>.

for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
// ...
}

Учебное пособие: Базовый ввод-вывод> Файловый ввод-вывод > Чтение, запись и создание текстовых файлов


Вы можете использовать String#split() для разделения String на части на основе регулярного выражения.

for (String part : line.split("\\s+")) {
// ...
}

Учебное пособие: Числа и строки> Строки> Манипулирование символами в строке


Вы можете использовать Integer#valueOf() для преобразования String в Integer.

Integer i = Integer.valueOf(part);

Учебное пособие: Числа и строки> Строки> Преобразование между числами и строками


Вы можете использовать List#add() для добавления элемента в List.

numbers.add(i);

Руководство: Интерфейсы > Интерфейс списка


Итак, в двух словах (при условии, что в файле нет ни пустых строк, ни завершающих / заглавных пробелов).

List<Integer> numbers = new ArrayList<>();
for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
for (String part : line.split("\\s+")) {
Integer i = Integer.valueOf(part);
numbers.add(i);
}
}

Если вы уже работаете с Java 8, то вы даже можете использовать Stream API для этого, начиная с Files#lines().

List<Integer> numbers = Files.lines(Paths.get("/path/to/test.txt"))
.map(line -> line.split("\\s+")).flatMap(Arrays::stream)
.map(Integer::valueOf)
.collect(Collectors.toList());

Учебное пособие: Обработка данных с помощью потоков Java 8

Ответ 2

В Java 1.5 представлен класс Scanner для обработки входных данных из файла и потоков.

Он используется для получения целых чисел из файла и будет выглядеть примерно так:

List<Integer> integers = new ArrayList<Integer>();
Scanner fileScanner = new Scanner(new File("c:\\file.txt"));
while (fileScanner.hasNextInt()){
integers.add(fileScanner.nextInt());
}

Проверьте API. Есть еще много вариантов для работы с разными типами источников ввода, разными разделителями и разными типами данных.

Ответ 3

В этом примере кода показано, как прочитать файл на Java.

import java.io.*;

/**
* This example code shows you how to read file in Java
*
* IN MY CASE RAILWAY IS MY TEXT FILE WHICH I WANT TO DISPLAY YOU CHANGE WITH YOUR OWN
*/


public class ReadFileExample
{
public static void main(String[] args)
{
System.out.println("Reading File from Java code");
//Name of the file
String fileName="RAILWAY.txt";
try{

//Create object of FileReader
FileReader inputFile = new FileReader(fileName);

//Instantiate the BufferedReader Class
BufferedReader bufferReader = new BufferedReader(inputFile);

//Variable to hold the one line data
String line;

// Read file line by line and print on the console
while ((line = bufferReader.readLine()) != null) {
System.out.println(line);
}
//Close the buffer reader
bufferReader.close();
}catch(Exception e){
System.out.println("Error while reading file line by line:" + e.getMessage());
}

}
}
Ответ 4

Посмотрите на этот пример и попробуйте создать свой собственный:

import java.io.*;

public class ReadFile {

public static void main(String[] args){
String string = "";
String file = "textFile.txt";

// Reading
try{
InputStream ips = new FileInputStream(file);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String line;
while ((line = br.readLine()) != null){
System.out.println(line);
string += line + "\n";
}
br.close();
}
catch (Exception e){
System.out.println(e.toString());
}

// Writing
try {
FileWriter fw = new FileWriter (file);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter fileOut = new PrintWriter (bw);
fileOut.println (string+"\n test of read and write !!");
fileOut.close();
System.out.println("the file " + file + " is created!");
}
catch (Exception e){
System.out.println(e.toString());
}
}
}
java arraylist