Запись m

Запись 1

Filek

Запись n

Запись 1

File1 имя хранилища

Catch(Exception ex)

Try

Public void actionPerformed(ActionEvent e)

{

Save(); // сохранение файла

}

});

form. show ();

}

public void Load()

{

String s,s1;

s=tf1.getText(); // имяфайла в текстовомполе

try // чтение с проверкойошибок

{

Scanner sc = new Scanner(new File(s)); // сканердлячтенияфайла

Size=0;

while (sc.hasNext()) // поканеконецфайла

{

Ar[Size]=sc.nextInt(); // следующеецелое

Size++;

}

sc.close();

}

catch (FileNotFoundException e) // ошибканенайденфайл

{

tf1.setText("Файл не найден");

return;

}

catch (Exception ex) // остальныеошибкинеправильноечисло

{

s1=Integer. toString (Size);

s="Не число: "+"Size="+s1;

tf1.setText(s);

return;

}

}

public void Save()

{

String s;

int i;

s=tf1.getText(); // имяфайла записи в текстовомполе

{

FileWriter fw=new FileWriter(s,false); // true – append!

PrintWriter pw = new PrintWriter(fw);

for (i=0; i<Size; i++)

{

pw.printf("%d ",Ar[i]); // через printf

}

pw.printf("\n");

pw.close();

}

{

}

}

public static void main (String args[])

{

Prog_3_2 f;

f= new Prog_3_2();

}

}

файл inp.txt

1 2 3 4 5

файл out.txt такой же

При чтении / записи строк выполняется замена

String Ar[] = new String[30];

pw.printf("%s \n",Ar[i]);

4) Хранение данных в ME

В ME используется RecordStore – хранилище записей

Хранилище находится в javax.microedition.rms

Состоит из объектов (аналог файлов), в которых размещаются записи. Запись – массив байтов byte [].

.......

......

........

По окончанию работу midlet хранилище не стирается, также как при замене батареи. Если удалить midlet, хранилище удаляется с ним. Эмулятор не сохраняет хранилища, при повторном запуске создается новые временные файлы!

Пример работы с хранилищами

import javax.microedition.midlet.*;

import com.sun.lwuit.*;

import com.sun.lwuit.events.*;

import com.sun.lwuit.geom.*;

import com.sun.lwuit.layouts.*;

import java.lang.Math.*;

import com.sun.lwuit.list.DefaultListModel;

import com.sun.lwuit.list.DefaultListCellRenderer;

import javax.microedition.rms.*;

public class Prog_3_5 extends MIDlet

{

int Regim;

Form form;

RadioButton jr1;

RadioButton jr2;

RadioButton jr3;

ButtonGroup bg;

Button bt;

TextField tf1;

TextField tf2;

DefaultListModel lm;

DefaultListCellRenderer dl;

List jl;

RecordStore rs1; // хранилище

String [] ArS=new String[30]; // массив для записей

int nS; // число записей

public void startApp()

{

int w,h;

Dimension d=new Dimension(200,200);

Display.init(this);

Regim=1;

form = new Form();

form.setPreferredSize(d);

form.setTitle("Работа с хранилищем");

w=form.getWidth();

h=form.getHeight();

CoordinateLayout e = new CoordinateLayout(w,h);

form.setLayout(e);

jr1=new RadioButton();

jr1.setX(10);

jr1.setY(10);

jr1.setText("Создать");

jr1.setSelected(true);

jr1.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

Regim=1;

bt.setText("Создание");

tf1.setText(" ");

tf2.setText(" ");

lm.removeAll();

}

});

form.addComponent(jr1);

jr2=new RadioButton();

jr2.setX(10);

jr2.setY(40);

jr2.setText("Загрузить");

jr2.setSelected(false);

jr2.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

Regim=2;

bt.setText("Загрузка");

tf1.setText(" ");

tf2.setText(" ");

lm.removeAll();

}

});

form.addComponent(jr2);

jr3=new RadioButton();

jr3.setX(10);

jr3.setY(70);

jr3.setText("Удалить");

jr3.setSelected(false);

jr3.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

Regim=3;

bt.setText("Удаление");

tf1.setText(" ");

tf2.setText(" ");

lm.removeAll();

}

});

form.addComponent(jr3);

bg = new ButtonGroup();

bg.add(jr1);

bg.add(jr2);

bg.add(jr3);

bt=new Button();

bt.setX(130);

bt.setY(10);

bt.setText("Работа ");

bt.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

String s;

int i,n;

if(Regim==2 || Regim==3)

{

String[] namesRec = RecordStore.listRecordStores();

n=namesRec.length;

for(i=0;i<n;i++)

{

lm.addItem(namesRec[i]);

}

}

if(Regim==1)

{

s=tf2.getText(); // имя хранилища для записи

rs1=openRecStore(s);

if(rs1!= null) // создано хранилище?

{

nS=lm.getSize(); // число строк в List

for(i=0;i<nS;i++) // строки List -> массив

{

ArS[i]=(String)lm.getItemAt(i);

}

for(i=0;i<nS;i++)

{

s=ArS[i];

writeRecord(rs1,s);

}

closeRecStore(rs1);

}

}

}

});

form.addComponent(bt);

tf1 = new TextField();

tf1.setX(130);

tf1.setY(40);

tf1.setText(" ");

tf1.addFocusListener(new FocusListener()

{

public void focusGained(Component e)

{

// при попадании в фокус

}

public void focusLost(Component e)

{

// при выходе из компоненты

String s;

if(Regim==1)

{

s=tf1.getText();

jl.addItem(s);

}

}

});

form.addComponent(tf1);

tf2 = new TextField();

tf2.setX(130);

tf2.setY(70);

tf2.setText(" ");

tf2.addFocusListener(new FocusListener()

{

public void focusGained(Component e)

{

// при попадании в фокус

}

public void focusLost(Component e)

{

int n,i;

String s;

n=0;

if(Regim==2)

{

lm.removeAll();

s=tf2.getText();

rs1=openRecStore(s);

try

{

n=rs1.getNumRecords();

}

catch (Exception ee)

{

}

for(i=1;i<=n;i++)

{

s=readRecord(rs1,i);

lm.addItem(s);

}

closeRecStore(rs1);

}

if(Regim==3)

{

s=tf2.getText();

deleteRecStore(s);

}

}

});

form.addComponent(tf2);

lm = new DefaultListModel();

lm.setSelectedIndex(-1);

dl=new DefaultListCellRenderer();

dl.setShowNumbers(false);

jl=new List(lm);

jl.setX(10);

jl.setY(140);

jl.setRenderingPrototype(" ");

jl.setListCellRenderer(dl);

jl.setMinElementHeight(5);

jl.setFixedSelection(List.FIXED_NONE_CYCLIC);

jl.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent ae)

{

String s,s1;

int k;

k=lm.getSelectedIndex();

s=(String)lm.getItemAt(k);

tf2.setText(s);

}

});

form.addComponent(jl);

form.show();

}

public RecordStore openRecStore(String Name)

{

RecordStore rs;

rs=null;

try

{

rs=RecordStore.openRecordStore(Name, true); // true,если его нет -создать

}

catch (Exception e)

{

}

return rs;

}

public void writeRecord(RecordStore rs,String str)

{

byte rec[]=new byte[200];

int k;

try

{

rec = str.getBytes("UTF-8");

}

catch(Exception e)

{

}

try

{

rs.addRecord(rec, 0, rec.length);

}

catch (Exception e)

{

}

}

public void closeRecStore(RecordStore rs)

{

try

{

rs.closeRecordStore();

}

catch (Exception e)

{

}

}

public String readRecord(RecordStore rs,int n)

{

byte[] recData = new byte[200];

int len;

String Rec;

Rec="";

try

{

len=rs.getRecord(n, recData, 0);

Rec=new String(recData,0,len,"UTF-8");

}

catch (Exception e)

{

}

return Rec;

}

public void deleteRecStore(String Name)

{

if (RecordStore.listRecordStores()!= null)

{

try

{

RecordStore.deleteRecordStore(Name);

}

catch (Exception e)

{

}

}

}

public void pauseApp()

{

}

public void destroyApp(boolean unconditional)

{

}

}

Глобальная переменная Regim (значения):

1 – создание хранилищ

2 – загрузка содержимого

3 – удаление хранилища

Радиокнопки:

Создать

Загрузить

Удалить

переключают режимы и при этом очищаются текстовые поля tf1,tf2, List jl и на кнопке bt появляется надпись Создание, Загрузка, Удаление.

Текстовое поле tf1 используется для добавления строк в List, которые сохраняются в хранилище, tf2 для записи имени хранилища.

Создание:

Regim=1

В поле tf1 вводятся строки, при выходе (focuslost) они добавляются в jl (List)

public void focusLost(Component e)

{

// при выходе из компоненты

String s;

if(Regim==1)

{

s=tf1.getText();

jl.addItem(s);

}

}

В поле tf2 водится название хранилища.

При нажатии bt создается хранилище с записями.

if(Regim==1)

{ // создание

s=tf2.getText(); // имя хранилища для записи

rs1=openRecStore(s); // открытие (имя)

if(rs1!= null) // создано хранилище?

{

nS=lm.getSize(); // число строк в List

for(i=0;i<nS;i++) // строки List -> массив

{

ArS[i]=(String)lm.getItemAt(i);

}

for(i=0;i<nS;i++)

{

s=ArS[i];

writeRecord(rs1,s); // запись строки в хранилище

}

closeRecStore(rs1); // закрытие хранилища

}

Загрузка:

Regim=2

При нажатии кнопки bt список имен всех хранилищ загружается в jl (List), при выборе одного имени, оно появляется в tf2. При выходе из tf2 строки хранилища выводятся в jl (List)

bt.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

String s;

int i,n;

if(Regim==2 || Regim==3)

{

// список имен хранилищ в массив namesRec

String[] namesRec = RecordStore.listRecordStores();

n=namesRec.length;

for(i=0;i<n;i++)

{

lm.addItem(namesRec[i]); // из мссива в jl (List)

}

}

public void focusLost(Component e)

{

int n,i;

String s;

n=0;

if(Regim==2)

{

lm.removeAll();

s=tf2.getText(); // имя хранилища

rs1=openRecStore(s);

try

{

n=rs1.getNumRecords(); // количество записей в выбранном хранилище

}

catch (Exception ee)

{

}

for(i=1;i<=n;i++)

{

s=readRecord(rs1,i); // чтение i записи (с единицы!)

lm.addItem(s);

}

closeRecStore(rs1);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: