Текстовый файл

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

Объект работает в одном из следующих режимов:

Создание объекта, работающего с текстовым файлом

 Чтобы создать объект Текстовый файл

  1. Перетащите элемент Текстовый файл  из палитры Внешние данные на диаграмму агента (или эксперимента).
  2. В панели Свойства, задайте Имя этого элемента. Это имя будет использоваться для идентификации элемента и доступа к нему из кода. 
  3. Выберите режим работы элемента: ЧтениеЗапись или Запись с добавлением в конец.
  4. Выберите, какой Набор символов будет использоваться для перевода байт в строки (или обратно).
  5. Укажите, с каким текстовым файлом этот объект будет работать. Если вы хотите изменять файл, хранящийся на локальном компьютере, выберите Файл из группы кнопок Ресурс и выберите файл в окне навигации, открываемом  по нажатию на кнопку Выбрать. Путь к файлу будет отображен в панели свойств. 
  6. Если же вы хотите считать информацию с указанного URL адреса, то выберите URL из группы кнопок Ресурс и введите нужный URL адрес в поле справа.
  7. Если вы планируете считывать информацию из файла, вам нужно будет указать, какие символы будут выполнять роль разделителей значений. Установите соответствующие флажки в группе кнопок Разделители. Если используются какие-то нестандартные разделители, укажите их в поле Другой.
Создав объект Текстовый файл и связав его с текстовым файлом, вы можете работать с его содержимым посредством программного интерфейса объекта.

Этот объект выполняет чтение из файла построчно. Номер текущей строки можно получить с помощью метода getLineNumber(). По умолчанию нумерация строк начинается с 0. Этот номер увеличивается по мере чтения данных после каждого символа разделителя строк.

Линия считается завершенной при достижении символа перевода строки ('\n'), возврата каретки ('\r'), либо символа возврата каретки, за которым сразу следует символ перевода строки.

В режиме чтения при каждом вызове метода чтения (например, readDouble()), объект перемещает свою текущую позицию к следующему значению, которое можно прочитать. Т.e. он считывает требуемые данные и пропускает все последующие символы разделителей, которые были заданы в свойствах объекта.

Изначально объект находится в "закрытом" состоянии: любой последующий вызов метода доступа (например, print(double)) откроет файл, т.е. следующее чтение (если объект находится в режиме чтения READ) начнет чтение с начала, в то время, как новая операция записи (если объект находится в режиме записи) начнет перезапись или запись в конец файла (в зависимости от режима записи).

У объекта есть методы skipChars(long) и skipTokens(int), выполняющие пропуск (заранее известного) количества символов (с учетом символов разделителей или без) из файла

Запись в текстовый файл

Объект предоставляет следующие методы для записи текста в файл:

void println() - Завершает текущую строку путем записи разделителя строк. Разделитель строк задается свойством системы line.separator, и необязательно является символом новой строки ('\n'). 

void print(<type> value) - записывает данное значение в файл. Если записывается число, то строка String, полученная путем вызова метода String.valueOf(value), переводится в байты согласно выбранной таблице символов, и в файл записываются именно эти байты. Если аргумент равен null, то записывается строка "null". 

void println(<type> value) - записывает данное значение в файл и завершает строку. Этот метод работает аналогично последовательному вызову методов print(value) и затем println().

void printf(java.util.Locale l, String format, Object... args)  - Метод для записи форматированной строки в текстовый файл с использованием заданного формата строки и аргументов. Число аргументов может меняться (и может быть равно нулю). 
l - данные о местоположении пользователя (locale), используемые при форматировании. Если аргумент l равен null, то локализация не производится.
format - формат строки, описанный в спецификации класса Formatter.
args - аргументы, передающие значения конструктору заданного формата строки. 

void printf(String format, Object... args)  - Метод для записи форматированной строки в текстовый файл с использованием заданного формата строки и аргументовЧисло аргументов может меняться (и может быть равно нулю). 
format - формат строки, описанный в спецификации класса Formatter.
args - аргументы, передающие значения конструктору заданного формата строки. 

void printf(String, Object...) и printf(Locale, String, Object...) - метод для записи форматированной строки в текстовый файл с использованием заданного формата строки и аргументов.

Оба метода (print() и println()) могут принимать значения всех следующих типов: boolean, char, char[], double, float, int, long, Object, String.

Чтение из текстового файла

Объект предоставляет следующие методы для чтения текста из файла (все эти методы доступны только в режиме чтения READ):

boolean canReadMore() - Возвращает true, если в файле еще содержится текст (начиная от текущей позиции). Если файл не был открыт, то этот метод открывает файл для чтения. 

int getLineNumber() - Возвращает номер текущей строки (нумерация начинается с 1). 
0 возвращается, если файл еще не был открыт (не были вызваны ни методы чтения, ни файлы пропуска, ни метод  canReadMore()).
-1 возвращается, если был достигнут конец файла.

String readLine() - Считывает строку текста.
При достижении символов конца строки номер текущей строки увеличивается. Если текущая позиция находится в середине строки (например, текущая строка - "33;Car" и метод readInt() был вызван один раз), то будет возвращена оставшаяся часть строки (в данном примере это - "Car", если разделитель ';', и ";Car", если нет).
Метод возвращает строку String, содержащую содержимое строки (начиная от текущей позиции), не включая символов конца строк, или null, если был достигнут конец потока.

String readString() - Считывает и возвращает строку String, содержащую текст от текущей позиции (находящейся после ранее считанного разделителя) до следующего разделителя (не включая его). 

boolean readBoolean() - Считывает значение типа boolean: "true" или "false" (в кавычках или без). 

byte readByte() - Считывает и возвращает значение типа byte

short readShort() - Считывает и возвращает значение типа short.

char readChar() - Считывает и возвращает один символ. Выбрасывает исключение, если в текущей позиции находится разделитель, или текст до следующего разделителя представляет собой не один символ. 

int readInt() - Считывает и возвращает значение типа int

double readDouble() - Считывает и возвращает значение типа double (число с плавающей точкой и двойной точностью). 

long readLong() - Считывает и возвращает значение типа long.

float readFloat() - Считывает и возвращает значение типа float (число с плавающей точкой). 

Вспомогательные методы

long skipChars(long n) - Пропускает как текстовые символы, так и символы разделителей. Возвращает действительное количество пропущенных символов.
    n - количество символов, которое следует пропустить.

int skipTokens(int n)- Пропускает текст, находящийся между разделителями, заданными в конструкторе. Возвращает действительное количество пропущенных символов текста.
n - количество символов, которое следует пропустить.

void close() - Закрывает поток чтения или записи этого объекта и освобождает все системные ресурсы, которые были заняты. Возвращает объект в состояние 'не открыт'.

void setFile(String fileName, int mode) - Задает новый файл, с которым будет работать этот объект. Если новый файл отличается от текущего, и если текущий файл открыт, то он будет закрыт.  Для объекта, работающего с URL, доступен только режим чтения READ
    fileName - абсолютный путь к файлу или путь к файлу относительно текущего рабочего каталога.    
    mode - Режим работы с файлом. Допустимые значения:
READ - чтение
WRITE - запись
WRITE_APPEND - запись с добавлением в конец файла
 
void setURL(java.net.URL url)- Задает новую ссылку url на ресурс, с которым должен работать этот объект. Этот метод переключает объект в режим чтения. Если новая ссылка отличается от текущей, и в данный момент открыт поток работы с ресурсом, то этот поток будет закрыт.

String getLocation() - Возвращает путь к файлу. Если путь не был задан, то возвращает null.

void setMode(int mode) - Переключает этот объект в новый режим. Если новый режим отличается от текущего, и если файл открыт, то он будет закрыт. Для объекта, работающего с URL, доступен только режим чтения READ.  
    mode - Режим работы с файлом. Допустимые значения:
READ - чтение
WRITE - запись
WRITE_APPEND - запись с добавлением в конец файла