Работа с текстовыми файлами
JBUILDER предоставляет компонент "текстовый файл" - TextDataFile, который используется для импортирования данных из текстового файла и экспортирования их обратно.
Компонент набора данных реализуется классом TableDataSet. Он используется для хранения данных, импортируемых из текстового файла. Если для текстового файла существует одноименный файл с расширением SHEMA, то структуру столбцов описывать нет необходимости. Такой файл автоматически создается компонентом TableDataSet при записи в текстовый файл и содержит описание столбцов и другую информацию по набору данных. Для каждого столбца набора данных создается объект типа Column.
В следующем примере иллюстрируется чтение данных из текстового файла и их отображение в компоненте типа JdbTable:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.dx.dataset.*; import com.borland.dbswing.*; public class Frame1 extends JFrame { // contentPane - контейнер для размещения // визуальных компонентов JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); // Компонент TextDataFile со страницы DataExpress // для работы с текстовым файлом - источником данных TextDataFile textDataFile1 = new TextDataFile(); // Компонент TableDataSet со страницы DataExpress, // реализующий набор данных TableDataSet tableDataSet1 = new TableDataSet(); Column column1 = new Column(); // Создается для // каждого столбца в наборе данных Column column2 = new Column(); Column column3 = new Column(); TableScrollPane tableScrollPane1 = new TableScrollPane(); // Компонент "таблица для набора данных" JdbTable jdbTable1 = new JdbTable(); public Frame1() { // Конструктор // Определение прослушиваемых событий enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { column2.setCaption("Столбец2"); //Отображаемый // заголовок столбца column2.setColumnName("NewColumn2"); //Имя столбца column3.setCaption("Столбец3"); column3.setColumnName("NewColumn3"); column1.setCaption("Столбец1"); column1.setColumnName("NewColumn1");
// Тип поля указывается классами из пакета com.borland.dx // Тип данных в столбце column2.setDataType(com.borland.dx.dataset.Variant.STRING); column2.setServerColumnName("NewColumn2"); column2.setSqlType(0); // Тип данных в столбце column3.setDataType(com.borland.dx.dataset.Variant.SHORT); column3.setServerColumnName("NewColumn3"); column3.setSqlType(0); // Тип данных в столбце column1.setDataType(com.borland.dx.dataset.Variant.SHORT); column1.setServerColumnName("NewColumn1"); column1.setSqlType(0); // Определение связи набора данных с текстовым файлом tableDataSet1.setDataFile(textDataFile1); textDataFile1.setFileName("D:\\J8\\ImportText.txt"); textDataFile1.setSeparator(","); // Разделитель между // полями contentPane = (JPanel) this.getContentPane(); // Текущая // панель для размещения компонентов contentPane.setLayout(borderLayout1); // Определяем // компоновку this.setSize(new Dimension(500, 400)); this.setTitle("Чтение данных из текстового файла"); tableDataSet1.setColumns(new Column[] {column1, column2, column3}); // Устанавливаем связь визуальной таблицы с набором данных jdbTable1.setDataSet(tableData Set1); tableScrollPane1.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); tableScrollPane1.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); contentPane.add(tableScrollPane1, BorderLayout.CENTER); tableScrollPane1.getViewport().add(jdbTable1, null); } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); // Завершение приложения } } }
Сохранение данных из открытого набора данных в текстовом файле выполняется методом Save.
Следующий пример иллюстрирует сохранение набора данных, выполняемое в обработчике события actionPerformed.
void button1_actionPerformed(ActionEvent e) { try { tableDataSet1.getDataFile().save(tableDataSet1); System.out.println ("Изменения успешно сохранены в файле"); } catch (Exception ex) { System.out.print("При сохранении файла произошла "); System.err.println(" ошибка: " + ex); } }