2017-09-01 10 views
1

Java私はの<Html>コードを使用しています。これは、完全に設計されたメール本文を作成することを意味していました。例えば、 。"Constant string too long"エラーを避けるために、Javaで大文字(<Html>コード)を宣言するにはどうすればよいですか?

String msg= 
      "<html>"+ 
      <BODY CONTENT> 
      "</html>"; 

問題は、私はエラー「長すぎる文字列定数」を取得しています。 あなたの誰もがこの問題を解決したり、これを直面している場合、私はいくつかのアイデアを必要としています。

+0

部分文字列を作る – Stultuske

+0

@Stultuske Strings.xmlの内部を意味しますか? –

+0

Strings.xmlはどこから来たのですか?私は、String a = "abcdefg ..."と言っているのではなく、あなたはString a = "ab"と言う。文字列b = "cd"; ... – Stultuske

答えて

1

あり、定数文字列が、1つの缶を限定されていますであれば、このようなリソースを通してそれを読んだことなどによって、実行時に作成されるように、メモリ内はるかに大きな文字列を持っている。

あなたはこのソリューションを試すことができます。

private static String msg = null; 

public static String getMyString() throws IOException { 
    if (null == msg) { 
     try (BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("msg.txt")))) { 
      msg = br.lines().collect(Collectors.joining("\n")); 
     } 
    } 
    return msg; 
} 

あなたはそれを呼び出すと、別の文字列に保存することができます:

String str = getMyString(); 
System.out.println("str = " + str); 

か、文字列ビルダを使用して文字列を構築することができます。

StringBuilder sb = new StringBuilder(100); 
sb.append("<html>") 
     .append("<body>").append(bodycontent) 
     .append("</body>") 
     .append("</html>"); 
String result = sb.toString(); 

希望はこれが便利です。歓声

1

は例えば、StringBuilderを使用してみてください。:

StringBuilder msg = new StringBuilder(here_put_size); //change string size, default value is 16 characters 
msg.append("<html>"); 
msg.append("<BODY CONTENT>"); 
msg.append("</html>"); 
return msg.toString(); 
2

constant string too longエラーに直面したときに、私たちが行うことができますので、多くのものがありません。

定数は、1つの文字列エントリにつき64K要素に制限されますが、回避策として64K個よりも少ない数の2倍の定数を分割することができます。

ソフトウェア設計の面では、完全な電子メール本文を単なる文字列として扱う考えは、最終的には完璧ではありません。通常、開発者はテンプレートエンジンを使用しており、電子メール本文を文字列定数ではなく別のファイルに外部化しています。 Androidアプリによく似合う例として、Chunkテンプレートエンジンを見てください。でも、VelocityFreemarkerのようなものがたくさんあります。テンプレートエンジンを使用すると、明確に、動的に読み込ま枚から静的電子メールの内容を分けることは、HTMLの表現だから、アプリケーションのデータモデルを分離し、そしてあなたのソフトウェアの有効なアーキテクチャを維持することができます

できないように正確な理由を認識していないビーイングファイルを定数ではなく作成するため、ファイルをjarファイルに埋め込むことから始まり、不要な漏洩を防ぐためにファイルを暗号化することから始まる、典型的なファイル接続の問題を解決するためのベストプラクティスがたくさんあります。ここで別の質問をしてください。

関連する問題