В Java SE создание, сохранение и чтение чисел из файла.

В Visual C++ создание, сохранение и чтение чисел из файла.

В ME аналог FileDialog отсутствует

 

5) Чтение запись файлов в Visual C++ и Java SE

 

 

В проекте создаем класс (проект добавить класс) filework.

#include <string.h>

#include "Filework.h"

#pragma once

 

namespace workfile {

 

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

Filework fw;

..................

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)

{

strcpy(fw.fName,"test.txt");

fw.Create();

fw.Save();

fw.Load();

}

 

Filework.h:

 

class Filework

{

public:

Filework(void);

~Filework(void);

char fName[200];

float Dt[20];

void Create();

void Save();

void Load();

int Nc; // количество чисел в файле

};

 

Filework.cpp:

 

 

#include "StdAfx.h"

#include "Filework.h"

#include <fstream>

using namespace std;

Filework::Filework(void)

{

}

 

 

Filework::~Filework(void)

{

}

void Filework::Create() // создание пустого файла

{

ofstream fout;

fout.open(fName);

fout.close();

int i;

for(i=0;i<10;i++) // задание массива для записи

{

Dt[i]=i+1.5;

}

}

 

void Filework::Save() // запись массива в файл

{

int i;

ofstream fout;

fout.open(fName);

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

{

fout << Dt[i]<<'\n';

}

fout.close();

}

 

void Filework::Load() // чтение чисел в массив, пока файл е закончится

{

ifstream fin;

fin.open(fName);

Nc=0;

while(fin.eof()==0) // пока не конец файла

{

fin >> Dt[Nc];

Nc++;

}

fin.close();

}

 

файл test.txt:

 

1.5

2.5

3.5

4.5

5.5

6.5

7.5

8.5

9.5

10.5

 

 

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.PrintWriter;

import java.util.Scanner;

 

import javax.swing.JFrame;

 

 

public class lab9

{

JFrame form;

String fName;

float Dt[]=new float[20];

int Nc; // количество элементов при чтении

lab9()

{

form = new JFrame();

form.setBounds (10,20,500,300);

form.setTitle ("лабораторная 9");

form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

form.setLayout(null);

form.show();

fName = new String("test.txt"); // имя файла

Create();

Save();

Load();

}

public void Create() // создание пустого файла

{

try

{

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

PrintWriter pw = new PrintWriter(fw);

pw.close();

}

catch(Exception ex) // пустая обработка, но необходима!

{

}

int i;

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

{

Dt[i]=(float)1.5+i; // тестовый массив для сохранения

}

}

 

public void Save()

{

int i;

try

{

FileWriter fw=new FileWriter(fName,false);

PrintWriter pw = new PrintWriter(fw);

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

{

pw.printf("%f \n",Dt[i]);

}

pw.close();

}

catch(Exception ex)

{

}

}

 

public void Load()

{

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

{

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

Nc=0;

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

{

Dt[Nc]=sc.nextFloat(); // следующеевещественное

Nc++;

}

sc.close();

}

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

{

// сообщение "ненайденфайл"

}

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

{

// сообщениефайленевещественноечисло"

}

}

 

public static void main (String args[])

{

lab9 f;

f= new lab9();

}

}

 

Файл test.txt:

 

1,500000

2,500000

3,500000

4,500000

5,500000

6,500000

7,500000

8,500000

9,500000

10,500000

 

6) Создание объектов, чтение данных из объектов,

запись данных в объекты хранилища записей

(RecordStore) в ME

 

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

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

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

Запись – массив байтов byte [] в кодировке UTF-8.

По окончанию работу midlet хранилище не стирается, также как при

замене батареи. Если удалить midlet, хранилище удаляется с ним.

Эмулятор не сохраняет хранилища, при повторном запуске создается

новые временные файлы! исправление: файл-свойства-выполнение-

выполнение с помощью OTA (over the air)