В статье рассказывается как считать и записать данные из файла под Java в IntelliJ IDEA на примере программы сложения двух чисел.
Почти все олимпиады по программированию работают с консольными программами, которые что-то считали из файла, провели манипуляции, а потом результат записали в другой файл. Да и многие обычные консольные программы работают по такому же принципу. Вот тут и рассмотрим, как это сделать.
Рассматривать я буду очень простой способ чтения из файла и записи в файл, чтобы код занимал минимум места, так как на тех же олимпиадах времени на написание «правильного» кода мало. Разумеется, что в практических приложениях надо будет предусмотреть множество проверок, обработок исключений и др.
Содержание
Создание проекта
Создайте пустое консольное приложение с именем, например, ReadWriteInFiles. Если вы не помните, как это сделать, то посмотрите в статье Создание пустого консольного приложения
Файлы
Создаем файл input.txt со следующим содержимым (те числа, что мы должны сложить):
1 2 |
2 3 |
И пустой файл output.txt.
Разместите их в папке вашего проекта:
Подготовка метода main
Чтобы нам не заморачиваться с обработкой исключений, то для метода main пропишем строчку throws IOException:
Через Alt + Enter подключим соответствующий import.
Чтение из файла
Читать из файла данные можно разными способами: посимвольно, побитово, целиком и так далее. На мой взгляд, проще всего считать за один раз все строчки из файла в массив строчек, а потом этот массив строчек обрабатывать, как нам нужно.
Это можно сделать следующим образом:
1 |
List<String> lines = Files.readAllLines(Paths.get("input.txt"), Charset.defaultCharset()); |
Не забудьте через Alt + Enter все пакеты подключить.
Теперь в нашем массиве lines все строчки нашего файла. Теперь обрабатывайте их, как хотите. Например, можно пройтись по всем строчкам через цикл:
1 2 3 4 |
for (String x:lines) { //обработка всех строк как нам нужно } |
Но в нашем случае мы заранее знаем, что там только две строчки с двумя числами и всё. Поэтому просто считываем две строчки из массива lines и переводим в числа их:
1 2 |
int a = Integer.parseInt(lines.get(0)); int b = Integer.parseInt(lines.get(1)); |
Теперь можем сложить наши числа:
1 |
int c = a + b; |
Запись в файл
Теперь мы должна записать результат в файл.
Вначале в текстовую переменную запишем то, что хотим сохранить:
1 |
String text = Integer.toString(c); |
А теперь сохраним эту переменную в нужный нам файл:
1 2 3 |
PrintWriter out = new PrintWriter("output.txt"); out.println(text); out.close(); |
Итоговый текст программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package com.company; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; public class Main { public static void main(String[] args) throws IOException { List<String> lines = Files.readAllLines(Paths.get("input.txt"), Charset.defaultCharset()); int a = Integer.parseInt(lines.get(0)); int b = Integer.parseInt(lines.get(1)); int c = a + b; String text = Integer.toString(c); PrintWriter out = new PrintWriter("output.txt"); out.println(text); out.close(); } } |
Если мы запустим приложение, то в файле input.txt появится число 5 – сумма двух чисел из файла output.txt.