В 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)