【发布时间】: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