Работа с файлами (ввод и вывод)

Содержание

Слайд 2

Класс Scanner Scanner – класс, который читает форматный ввод и преобразует

Класс Scanner

Scanner – класс, который читает форматный ввод и преобразует его

в бинарную форму.
Scanner позволяет читать данные с клавиатуры, из файла на диске, из строки.
Слайд 3

Класс Scanner. Чтение с клавиатуры Общий вид: Scanner in1 = new

Класс Scanner. Чтение с клавиатуры

Общий вид:

Scanner in1 = new Scanner(System.in);
Scanner in2

= new Scanner(System.in, “cp1251”);
Слайд 4

Класс Scanner. Чтение из строки Общий вид: Scanner in = new

Класс Scanner. Чтение из строки

Общий вид:

Scanner in =
new Scanner("10

99,88 сканирование это просто");
int a = in.nextInt(); // 10
double b = in.nextDouble(); // 99.88
String s = in.next(); // "сканирование"
Слайд 5

Класс Scanner. Чтение из файла Общий вид: File file = new

Класс Scanner. Чтение из файла

Общий вид:

File file = new File (“in.txt”);
Scanner

in1 = new Scanner(file);
Scanner in2 = new Scanner(file, “cp1251”);

Внимание! Для того, чтобы работать с классом File, нужно подключить пакет java.io с помощью команды

import java.io.*;

Внимание! В методе main нужно указать исключение ввода-вывода, которое может генерироваться этим методом

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

Слайд 6

Основы сканирования Scanner читает лексемы из некоторого источника (с клавиатуры, из

Основы сканирования

Scanner читает лексемы из некоторого источника (с клавиатуры, из строки,

из файла), который указан при создании объекта Scanner.
Лексема – порция ввода, отделенная набором разделителей, которыми по умолчанию являются пробелы.
Слайд 7

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

Процедура сканирования

Определите, доступен ли специфический тип ввода вызовом одного из методов

класса Scanner hasNextX(), где X – нужный тип данных.
Если ввод доступен, читайте его одним из методов класса Scanner nextX().
Повторяйте процесс до завершения ввода.
Слайд 8

Пример. Чтение целых чисел с клавиатуры Scanner in = new Scanner

Пример. Чтение целых чисел с клавиатуры

Scanner in = new Scanner (System.in);

int i;
while(in.hasNextInt()) {
i = in.nextInt();
// ...
}

Цикл while остановится, как только следующая лексема окажется не целым числом.

Слайд 9

Некоторые методы hasNext – 1

Некоторые методы hasNext – 1

Слайд 10

Некоторые методы hasNext – 2

Некоторые методы hasNext – 2

Слайд 11

Некоторые методы next – 1

Некоторые методы next – 1

Слайд 12

Некоторые методы next – 2

Некоторые методы next – 2

Слайд 13

Пример. Чтение с клавиатуры Scanner in = new Scanner (System.in); int

Пример. Чтение с клавиатуры

Scanner in = new Scanner (System.in);
int count =

0; double sum = 0;
while (in.hasNext()) {
if (in.hasNextDouble()) {
sum += in.nextDouble();
count++; }
else
break;
}
System.out.printf(“Среднее = %f", sum / count);
Слайд 14

Пример. Чтение из файла – 1 Рассмотрим ту же самую задачу,

Пример. Чтение из файла – 1

Рассмотрим ту же самую задачу, но

с чтением данных из файла. Пусть имеется файл in.txt, который находится в папке проекта.
in.txt

2 3,4 5 6 7,4 9,1 10,5

Слайд 15

Пример. Чтение из файла – 2 import java.util.*; import java.io.*; public

Пример. Чтение из файла – 2

import java.util.*;
import java.io.*;
public class Main {
public

static void main(String[] args)
throws IOException {
File file = new File(“in.txt");
Scanner in = new Scanner (file, “cp1251”);
int count = 0;
double sum = 0;

Подгружаем пакет для работы с классом File

Метод main может генерировать исключения ввода-вывода

Обращение к файлу in.txt

Слайд 16

Пример. Чтение из файла – 3 while (in.hasNext()) { if (in.hasNextDouble())

Пример. Чтение из файла – 3

while (in.hasNext()) {
if (in.hasNextDouble()) {

sum += in.nextDouble();
count++; }
else
break;
}
System.out.printf(“Среднее = %f", sum / count);
}}

Дальнейший код повторяет пример с чтением с клавиатуры

Слайд 17

Класс PrintWriter PrintWriter – класс, который применяется для записи файла. Внимание!

Класс PrintWriter

PrintWriter – класс, который применяется для записи файла.

Внимание! Для того,

чтобы работать с классом PrintWriter, нужно подключить пакет java.io с помощью команды

import java.io.*;

Внимание! В методе main нужно указать исключения ввода-вывода, которые могут генерироваться этим методом

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

Слайд 18

Конструкторы класса PrintWriter PrintWriter out = new PrintWriter( ); Общий вид:

Конструкторы класса PrintWriter

PrintWriter out = new PrintWriter(<имя файла>);

Общий вид:

Каждый раз при

новой записи предыдущие данные будут стираться.
Слайд 19

Некоторые методы PrintWriter

Некоторые методы PrintWriter

Слайд 20

Пример. Запись в файл import java.io.*; public class Main { public

Пример. Запись в файл

import java.io.*;
public class Main {
public static void main(String[]

args)
throws IOException {
PrintWriter out = new PrintWriter("out.txt");
out.print ("2 3,4 5 6 7,4 9,1 10,5");
out.close();
}
}

Файл out.txt будет помещен в папке проекта.

Слайд 21

Пример. Чтение и запись – 1 Дмитрий 24 Петр 23 Ольга

Пример. Чтение и запись – 1

Дмитрий 24
Петр 23
Ольга 22

Имя: Дмитрий ;

возраст: 24
Имя: Петр; возраст: 23
Имя: Ольга; возраст: 22

student.in

student.out

Слайд 22

Пример. Чтение и запись – 2 import java.util.*; import java.io.*; public

Пример. Чтение и запись – 2

import java.util.*;
import java.io.*;
public class Main {

public static void main(String[] args)
throws IOException {
File file = new File(“student.in");
Scanner in = new Scanner(file);
PrintWriter out =
new PrintWriter(“student.out");
Слайд 23

Пример. Чтение и запись – 3 while (in.hasNext()) { String name

Пример. Чтение и запись – 3

while (in.hasNext()) {
String name

= in.next();
int age = in.nextInt();
out.printf("Имя: %s; возраст: %d\n", name, age);
}
in.close();
out.close();
}
}
Слайд 24

Создание текстовых файлов в NetBeans Для создания текстовых файлов Вызовите меню

Создание текстовых файлов в NetBeans

Для создания текстовых файлов
Вызовите меню «Файл»

- «Создать файл»,
Выберите категорию «Прочее», тип файла «Пустой файл».
Задайте имя файла с расширением, например sum.in
В поле «Папка» должно быть пусто.
Нажмите кнопку «Готово».
В открывшемся окне отредактируйте входные данные для программы и сохраните их.
Слайд 25

Создание текстовых файлов в NetBeans

Создание текстовых файлов в NetBeans

Слайд 26

Задание Задача 1. Напишите программу, которая считывает 2 целых числа из

Задание

Задача 1. Напишите программу, которая считывает 2 целых числа из файла

и выводит сумму этих чисел в другой файл.
Задача 2. Напишите программу, которая считывает все целые числа из файла и выводит сумму этих чисел в другой файл.
Слайд 27

Класс FileWriter FileWriter – класс, который применяется для записи файла. Внимание!

Класс FileWriter

FileWriter – класс, который применяется для записи файла.

Внимание! Для того,

чтобы работать с классом FileWriter, нужно подключить пакет java.io с помощью команды

import java.io.*;

Внимание! В методе main нужно указать исключение ввода-вывода, которое может генерироваться этим методом

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

Слайд 28

Конструкторы класса FileWriter FileWriter out = new FileWriter( ); Общий вид:

Конструкторы класса FileWriter

FileWriter out = new FileWriter(<имя файла>);

Общий вид:

Каждый раз при

записи предыдущие данные будут удаляться из файла.

FileWriter out = new FileWriter(<имя файла>,
true);

Новые данные будут дописываться в конец файла.

Слайд 29

Некоторые методы FileWriter

Некоторые методы FileWriter

Слайд 30

Пример. Запись в файл import java.io.*; public class Main { public

Пример. Запись в файл

import java.io.*;
public class Main {
public static void main(String[]

args)
throws IOException {
FileWriter out = new FileWriter("out.txt");
out.write("2 3,4 5 6 7,4 9,1 10,5 end");
out.close();
}
}

Файл out.txt будет помещен в папку проекта.

Запись данных в файл

Поток закрыт

Слайд 31

Класс Formatter Formatter – класс, который предлагает преобразования формата, позволяющие отображать

Класс Formatter

Formatter – класс, который предлагает преобразования формата, позволяющие отображать числа,

строки в любом виде.
Общий вид:

Formatter fmt = new Formatter();
fmt.format(<форматная строка>,
<список аргументов>);

Внимание! Для того, чтобы работать с классом Formatter, нужно подключить пакет java.util.Formatter

Слайд 32

Пример использования класса Formatter Formatter fmt = new Formatter(); fmt.format(“Форматировать %s

Пример использования класса Formatter

Formatter fmt = new Formatter();
fmt.format(“Форматировать %s очень

просто: %d, %f”,
“с помощью Java”, 10, 98.5);

Объект Formatter, содержащий строку «Форматировать с помощью Java очень просто: 10, 98,500000»

Слайд 33

Пример. Чтение и запись – 1 Василий 24 Петр 23 Анна

Пример. Чтение и запись – 1

Василий 24
Петр 23
Анна 24

Имя: Василий; возраст:

24
Имя: Петр; возраст: 23
Имя: Анна; возраст: 24

in.txt

out.txt

Слайд 34

Пример. Чтение и запись – 2 import java.util.*; import java.io.*; public

Пример. Чтение и запись – 2

import java.util.*;
import java.io.*;
public class Main {

public static void main(String[] args)
throws IOException {
File file = new File("in.txt");
Scanner in = new Scanner(file, "cp1251");
FileWriter out = new FileWriter("out.txt");
Formatter fmt = new Formatter();
String s;