String.format()の問題は、フォーマット文字列で変数のインデックスを使用することを余儀なくされることであり、同様のパターン%1$ty-%1$tm-%1$td-%2$03d
はユーザーが処理するのに問題がある可能性があります。
Calendar time = Calendar.getInstance();
int number = 7;
String msg = String.format("Data-%1$ty-%1$tm-%1$td-%2$03d.xml", time, number);
私のプロジェクトの1つで、Apache Velocityを使用することにしました(例をここに示します:http ://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html )。この種のタスクには非常に強力なツールですが、フォーマットで意味のある変数名を使用できる可能性がありますDate-${year}-${month}-${day}-${number}.xml
。まず、速度コンテキストに適切な変数を追加する必要があります。
VelocityContext context = new VelocityContext();
context.put("number", "007");
context.put("year", ...);
ただし、そうすると、ユーザーがフォーマット文字列を指定するのがはるかに簡単になります。