Хотя с помощью ранее рассмотренных классов можно записывать текст в файлы, однако они предназначены прежде всего дл работы с бинарными потоками данных, и их возможностей для полноценной работы с текстовыми файлами недостаточно. И для этой цели служат совсем другие классы, которые являются наследниками абстрактных классов Reader и Writer .
Запись файлов. Класс FileWriter
Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.
Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:
Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.
Запишем в файл какой-нибудь текст:
В конструкторе использовался параметр append со значением false — то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.
Чтение файлов. Класс FileReader
Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.
Для создания объекта FileReader мы можем использовать один из его конструкторов:
А используя методы, определенные в базом классе Reader, произвести чтение файла:
Также мы можем считывать в промежуточный буфер из массива символов:
В данном случае считываем последовательно символы из файла в массив из 256 символов, пока не дойдем до конца файла в этом случае метод read возвратит число -1.
Есть определенная кнопка. Когда пользователь нажимает на нее, должен открыться определенный текстовый файл. Для этого нужно создавать новый jFrame с jTextArea на нем, или это по другому реализуется? Подскажите, пожалуйста.
1 ответ 1
При этом предполагается, что в THE_FILE содержится адрес файла, который необходимо прочитать, а JavaApplication — имя главного класса.
Я не могу понять, насколько я прав в этой программе:
В сообщении об ошибке указано, что файл не найден, но я знаю, что файл уже существует. Нужно ли сохранять файл в специальной папке?
Ошибка "notepad encypt.me.txt" . Поскольку ваш файл имеет имя "encypt.me.txt", вы не можете поставить "блокнот" перед своим именем. Кроме того, файл с именем "notepad encypt.me.txt", вероятно, не существует или не является тем, который вы хотите открыть.
Кроме того, вы должны указать путь (абсолютный или относительный) вашего файла, если он не находится в папке проекта.
Я приму гипотезу, что вы находитесь в системе Microsoft Windows.
Если ваш файл имеет абсолютный путь "C:fooarencypt.me.txt", вам нужно передать его как "C:\foo\bar\encypt.me.txt" или как "C:"+File.separatorChar+"foo"+File.separatorChar+"bar"+File.separatorChar+encypt.me.txt" .
Если он все еще не работает, вы должны убедиться, что файл:
1) Существуют на указанном пути. Вы можете сделать это, используя следующий фрагмент кода:
Если указанный путь является правильным, он должен быть прав.
2) Может быть прочитан приложением
Вы можете сделать это, используя следующий фрагмент кода:
Если у вас есть разрешение на чтение файла, оно должно быть истинным.