StringBuilder在大约1500个字符后中断

时间:2014-12-09 14:30:11

标签: java stringbuilder

我用Stringbuilder构建一个String,最后我想通过电子邮件发送这个String,但似乎文本总是在~1500个字符后被切断。

List<Itprojekte> items = tableModel.getAllElements();
    StringBuilder body = new StringBuilder(items.size() * 80);
    SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm");

        for (Itprojekte project : items) {
            body.append("Time:\n").append(df.format(project.getTime())).append("\n\n");
            body.append(lineSeparator);
            body.append("Name:\n").append(project.getName()).append("\n\n");
            body.append(lineSeparator);
            body.append("Place:\n").append(project.getTown()).append("\n\n");
            body.append(lineSeparator);
            body.append("Description:\n").append(project.getDescription()).append("\n\n");
            body.append(lineSeparator);
            body.append("Link:\n").append(project.getUrl().trim());
            body.append(lineSeparator);
            body.append(lineSeparator);
        }



        try {
        mailto("Test", body.toString());
    } catch (IOException ex) {
        Logger.getLogger(ProjectsResultjForm.class.getName()).log(Level.SEVERE, null, ex);
    } catch (URISyntaxException ex) {
        Logger.getLogger(ProjectsResultjForm.class.getName()).log(Level.SEVERE, null, ex);
    }

mailto:

public static void mailto(String subject,
        String body) throws IOException, URISyntaxException {
    String uriStr = String.format("mailto:?subject=%s&body=%s",
            urlEncode(subject),
            urlEncode(body));
    Desktop.getDesktop().browse(new URI(uriStr));
}

2 个答案:

答案 0 :(得分:0)

唯一需要注意的是可用的堆空间。

答案 1 :(得分:0)

一切都还好。 首先,您可以降低资源,使用StringBuilder的初始容量加快速度。

    StringBuilder subject = new StringBuilder(items.size() * 80);

    for (Itprojekte project : items) {
        ...
    }
    if (subject.length() < 1500) {
        Logger.getLogger(ProjectsResultjForm.class.getName()).log(Level.WARN,
                "*** Mail body: {0}", subject);
    }

错误位于mailto网址中:网址的大小限制为1600左右。