Эмуляция 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);
}
}
}




Узнай о чем ты на самом деле сейчас думаешь

