Эмуляция Property в J2ME
Тому, кто работал с Property в нормальной Джаве и вероятно пытался делать тоже самое в J2ME, скорее всего понятна проблема: Нужных Объектов в J2ME просто нет, а решение предложеное на sun сервере в откомпилированом состоянии весит чуть ли не 4 кила (иногда это 10% от всего ресурса памяти который вообще доступен). Задача простого чтения переменной из файла в этом случае вообще не стоит свеч. Если же в вашем текстовом файле 5-6 языков по килу каждый, вообще становится хреново.
Я делаю один файл, где загоняю текст в бинарном виде в виде Unicode, так же в Unicode и читаю по определенным позициях. Просто как две копейки. Опробовано на 18 языках (японский, корейский, мандарин и т.д - в том числе).
Чтение из файла
/* * PropLoader.java * * Created on July 10, 2002, 9:07 AM * Простой пример как прочитать текст в Unicode из файла */ /** * Simple Property file. * ** $Log: PropLoader.java,v $ * Revision 1.1 2002/07/30 13:20:22 Alexei Prosvirin * added to CVS * * ** * @author Alexei Prosvirin* * @version $Id: PropLoader.java,v 1.1 2002/07/30 13:20:22 alexei Exp $ */ import java.io.*; public class PropLoader { static int NumTexts = 0; static StringBuffer[] strings = new StringBuffer [NumTexts]; public PropLoader(int int_n) { //int_n - колличество эллементов, доступных в текстовом файле NumTexts = int_n; try { InputStream is; DataInputStream file; is = getClass().getResourceAsStream ("/text.dat"); file = new DataInputStream (is); for (int i = 0; i < NumTexts; ++i) strings[i] = new StringBuffer(file.readUTF()); is.close (); } catch (Exception e) { e.printStackTrace(); } } public static String getS(int int_n){ return String.valueOf(strings[int_n]); } }
Запись в файл
/* * Saver.java * * Created on September 30, 2002, 11:10 AM */ /** * * @author Alexei Prosvirin * @version */ import java.io.*; public class Saver extends Object { /** Creates new Saver */ public Saver() { } /** * @param args the command line arguments */ public static void main (String args[]) { saveText("alexei"); } public static void saveText(String str_text){ String str_f = "Continue"; try{ DataOutputStream dos = new DataOutputStream(new FileOutputStream("/text.dat")); dos.writeUTF("Score"); dos.writeUTF("Exit"); dos.writeUTF("Back"); dos.writeUTF("Play"); dos.writeUTF("Help"); dos.close(); } catch(Exception e){ System.out.println(e); } } }