【问题标题】:How to accelerate loading resource file in J2MEJ2ME中如何加速加载资源文件
【发布时间】:2014-03-17 10:02:32
【问题描述】:

我正在使用 J2ME Wireless Toolkit 2.2 编写 J2ME 应用程序 我有以下代码:

public class BusReader
{

  private String[] fileNames;
  private final String allFilesInfoFile = "files_in_dir";

  public BusReader ()
  {
  fileNames = getFileNames ();
  String busNo = getBusNo ("BusNo1p.bin");
  }

  public String[] getAllBusFiles ()
  {
  return fileNames;
  }

  public String getBusNo (String fileName)
  {
  String[] fileLines = loadResourceFile (fileName);
  int linesCount = fileLines.length;

  for (int i=0;i<linesCount;++i)
    if (fileLines[i].equals ("[BusNo]") && i < linesCount-1)
      return fileLines[i+1];

  return null;
  }

  public String getDefaultDirection (String fileName)
  {
  String[] fileLines = loadResourceFile (fileName);
  int linesCount = fileLines.length;

  for (int i=0;i<linesCount;++i)
    if (fileLines[i].equals ("[BusDirection]") && i < linesCount-1)
      return fileLines[i+1];

  return null;
  }

  private String[] getFileNames ()
  {
  return loadResourceFile (allFilesInfoFile);
  }

  private String[] loadResourceFile (String fileName)
  {
  String content = "";

    try
    {
    Reader in = new InputStreamReader(this.getClass().getResourceAsStream(fileName), "iso-8859-2");
    StringBuffer temp = new StringBuffer(1024);
    char[] buffer = new char[1024];
    int read;

    while ((read=in.read(buffer, 0, buffer.length)) != -1)
      temp.append(buffer, 0, read);

    content = temp.toString();
    } catch (IOException e) {
    return null;
    }

  int len = content.length ();

    if (content.charAt (len-1) == '\n' && content.charAt (len-2) == '\r')
    {
    String newContent = "";

      for (int i=0;i<len-2;++i)
        newContent += content.charAt (i);

    content = newContent;
    }

  String[] fileLines = TString.Split ("\r\n", new TString(content));

  for (int i=0;i<fileLines.length; ++i)
  {
    fileLines[i] = fileLines[i].trim ();
      if (fileLines[i].length () == 0)
        fileLines[i] = "";
  }

  return fileLines;
  }
}

一切正常,但问题是当我试图将我的应用程序复制到手机中时。在我的手机上,当我在应用程序显示之前打开应用程序时,我必须等待 35 秒。这是因为,构造函数执行了两次函数:

loadResourceFile (String fileName)

加载资源文件。函数正在加载的文件大小为:1.22KB 和 29KB。 问题是:如何加速加载函数(loadResourceFile)?

我尝试将 java 类文件创建为资源数据,但它超出了 java 内存限制。我将数组 String[][][][] 更改为 String[][][] 并在 15 秒内加载到我的手机上。我想当我将数据作为资源加载时,它会运行得更快。我的手机:诺基亚3110c

【问题讨论】:

    标签: file java-me resources loading


    【解决方案1】:

    我找到了。 它是以下几行(需要 35 秒):

    if (content.charAt (len-1) == '\n' && content.charAt (len-2) == '\r')
    {
    String newContent = "";
    
      for (int i=0;i<len-2;++i)
        newContent += content.charAt (i);
    
    content = newContent;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 2021-03-06
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      相关资源
      最近更新 更多