Работа с файлами в Java. FileWriter и FileReader

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

 

snimok-ekrana-2016-11-16-v-21-25-22snimok-ekrana-2016-11-16-v-21-35-19

*Это Говард Стивен Берг (Howard Stephen Berg), один из самых быстро читающих людей в мире 🙂 А FileWriter - Уильям Шекспир.

Данная статья:

  • написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
  • это одна из статей из нашего "Самоучителя по Java"

Рассмотрим работу с FileWriter и FileReader:

  • с помощью FileWriter мы можем создавать файлы
  • с помощью FileReader - считывать их
Внимание:

Потоки FileWriter и FileReader немного отличаются от того, с чем мы встречались ранее. Работая с ними, понадобится всегда помнить 3 важных момента:

1. Объявление

Перед тем, как вызывать какие-нибудь методы для работы с файлами, нужно объявить FileWriter/FileReader:

snimok-ekrana-2016-11-17-v-17-07-25

или

snimok-ekrana-2016-11-17-v-17-10-14

Но Eclipse может не распознать FileReader/FileWriter и начнет ругаться. Если такое произойдет, посмотрите, импортировали ли вы библиотеку java.io.*. Для этого в самой первой строчке напишите:

2. Нужно закрыть поток

FileWriter/FileReader - это потоки, их нужно не только «открыть» (то-есть объявить), но и «закрыть». Представьте, что Вы открыли кран. Нельзя же уйти из дому, оставив воду литься?

stocksnap_03f8a942c5

Это правило работает и для других потоков - кроме стандартных System.in и System.out.

Закрыть поток можно с помощью .close():

snimok-ekrana-2016-11-17-v-17-22-30

или

snimok-ekrana-2016-11-17-v-17-24-05

Пример:

3. Допишите "волшебную фразу".

В программировании очень важна безопасность. А работа с FileWriter/FileReader - это небезопасно, в процессе может возникнуть масса разных ошибок. Это беспокоит Eclipse (или IntellijIdea - смотря чем пользуетесь), и программу она просто так не запустит. Помните, что к методу нужно дописать «throws Exception»:

snimok-ekrana-2016-11-17-v-18-01-04

Итак, еще раз акцентируем внимание - всегда Вы должны помнить о 3 моментах:

  1. Объявить
  2. Не забыть закрыть поток
  3. Дописать «throws Exception»

Замомнили? 🙂

И еще, потоки FileWriter и FileReader воспринимают все файлы как текстовые:

snimok-ekrana-2016-11-16-v-21-44-24


FileWriter

Теперь представим, что Вы начинаете использовать FileWriter.

1. Объявление.

Как Вы помните, нужно не забыть импортировать библиотеки java.io.* и дописать "волшебную фразу" к методу, где Вы собираетесь объявить FileWriter.

Объявляем, как помните, почти как Scanner:

snimok-ekrana-2016-11-17-v-17-07-25

Объявили. А что теперь можно делать? Теперь пора пользоваться возможностями FileWriter!

Основной метод FileWriter - это метод .write().

snimok-ekrana-2016-11-17-v-18-48-33

Мало? Да, но посмотрите, как много с ним можно сделать:

*обратите внимание - мы написали нашу "волшебную фразу" и в методе main, и в методе newFile.

Так мы можем записать числа от k1 до k2, от 2 до 9, в наш файл file1.txt. Можно записывать только четные или нечетные числа, какой-нибудь текст, и многое другое.

2. Переход на следующую строку

Но мы Вам кое-чего не сказали. Если запустить код из прошлого пункта, получится:

snimok-ekrana-2016-11-22-v-17-44-19

Если понадобится вывести числа в столбик, понадобится добавить "\n" от "new line", новая строка. Запишем в файл стих:

Получим:

snimok-ekrana-2016-11-22-v-18-01-26

Каждый раз, когда мы хотели, чтобы программа переходила на новую строку, мы ставили  "\n":

snimok-ekrana-2016-11-22-v-18-08-25

 

Теперь вы знаете, как вывести числа с новой строки:

3. Закрываем поток

После того, как Вы записали все необходимое, нужно не забыть закрыть поток. Это мы делали в каждом из приведенных примеров:

snimok-ekrana-2016-11-22-v-18-13-47

snimok-ekrana-2016-11-22-v-18-14-00

FileReader

Теперь, рассмотрим пошагово работу с FileReader.

1. Объявление

Сначала FileReader, как и FileWriter, нужно объявить. Не забудьте про библиотеку и "волшебную фразу":

2. FileReader + Scanner

Мы объявили не только FileReader, но и Scanner. Почему?

В отличии от FileWriter, FileReader не используется один:

2_shake2_reader

Не вдаваясь в подробности, запомните, что FileReader и Scanner идут вместе. Но не забывайте их "связать" - для этого напишите название вашего объекта FileReader  вместо "System.in" при объявлении Scanner:

snimok-ekrana-2016-11-22-v-18-41-27snimok-ekrana-2016-11-22-v-18-44-43

3. Методы

Тут уже больше методов. Рассмотрим методы .nextLine()  и .hasNextLine().

  • .nextLine()   - это метод, который считывает строку (до ENTER), и возвращает это значение
  • .hasNextLine() - метод, который возвращает boolean - true или false, показывая, есть ли следующая строка.

Пример:

Должен быть такой результат:

snimok-ekrana-2016-11-22-v-19-08-13

Обратите внимание: мы используем .hasNextLine()  для того, чтобы избежать ошибки, и не заставлять .nextLine() считывать строку, которой не существует:

snimok-ekrana-2016-11-22-v-19-11-15

snimok-ekrana-2016-11-22-v-19-11-15

4. Закрываем поток.

Закрываем поток:

snimok-ekrana-2016-11-22-v-19-16-10

Готово. Теперь Вы знаете, как работать с FileWriter и FileReader.


Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--