需要显示100,000个字符的文本。如果我把它放到String对象中,我会得到一个错误“常量字符串太长”。 StringBuffer对象也一样。
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Long text here........"); //<-- error
除了将文本剪切成较小的文本之外,还有解决方法吗?
答案 0 :(得分:7)
我认为java中常量字符串的长度限制为64K - 但是,您可以在运行时构造一个大于64K的字符串。
答案 1 :(得分:4)
不允许在java中直接使用超过64k的字符串,但可以间接使用它们。
就是这样。它将在strings.xml
中为您生成一个字符串
如果您的strings.xml
中已有字符串,则可以使用此代码进行检索:
String yourStr = getString(R.string.sampleBigString);
答案 2 :(得分:2)
是常量字符串在java中有限制。
所以你可以做的是将你的String复制到一个文本文件中并放入Assets文件夹的根目录,并通过以下方法从文件中读取。
public String ReadFromfile(String fileName, Context context) {
StringBuilder returnString = new StringBuilder();
InputStream fIn = null;
InputStreamReader isr = null;
BufferedReader input = null;
try {
fIn = context.getResources().getAssets()
.open(fileName, Context.MODE_WORLD_READABLE);
isr = new InputStreamReader(fIn);
input = new BufferedReader(isr);
String line = "";
while ((line = input.readLine()) != null) {
returnString.append(line);
}
} catch (Exception e) {
e.getMessage();
} finally {
try {
if (isr != null)
isr.close();
if (fIn != null)
fIn.close();
if (input != null)
input.close();
} catch (Exception e2) {
e2.getMessage();
}
}
return returnString.toString();
}
答案 3 :(得分:0)
我遇到了同样的问题,解决方案是将一个很大的字符串常量分配给一个常量,然后将其拆分为几个较小的常量,这些常量分配给新常量并将它们连接起来。
示例:
无法编译的非常大的字符串:
private static String myTooBigText = "...";
将其拆分为多个常量,然后将它们串联在一起进行编译:
private static String mySmallText_1 = "...";
private static String mySmallText_2 = "...";
...
private static String mySmallText_n = "...";
private static String myTooBigText = mySmallText_1 + mySmallText_2 + ... + mySmallText_n;