2012-03-10 126 views

回答

1

约翰·斯乔贝格的解释是好的:

“这是如何使用这将决定实践的String。”

如果30万字,使你的String对象不驻留在用双引号(”“),例如Java源文件位于外部文件中,那么您可以使用不同的技术按块或整体获取字符串内容块。看看这个例子:

FileInputStream fis = new FileInputStream("yourFile.txt"); 
BufferedInputStream bis = new BufferedInputStream(fis); 
byte [] buffer = new byte [ 8 ]; 
int bytesRead = 0; 
String chunk = ""; 

while ((bytesRead = bis.read(buffer)) != -1) 
    chunk = new String(buffer, 0, bytesRead); 

假设你处理可能出现的异常,在上面的代码中你会得到你每次进入while循环时间的大小8个字节的字符串。因此,通过修改此代码中的8字节数组大小,您可以更改块大小,并在其他地方使用块,打印它们等。

在您的示例中,您说您的字符串包含大约300000个字符。因此,将字节数组buffer的大小设置为4 x 300,000 = 1,200,000将使您获得包含所有字符的单个字符串块。

1

Java表示使用UTF-16编码的字符串,因此在最坏的情况下,每个字符为4字节。这给你一个粗略的4*300000/1024/1024 ~ 1.14MB字符串,这本身并不坏。

这就是你如何使用确定实践的字符串。

相关问题