所以基本上我有一个需要写入具有特定格式的文本文件的java对象列表。
例如。
class car
{
String license;
String color;
String model;
String numOfSeats;
}
并且必须将其写入文本文件中,每行的格式为
license--color-----model-------numOfSeats------
license
必须占用10个字节,即使实际字符串的长度较短。
color
必须占用10个字节,model
必须占用12个字节等。
所以我想以这样的方式创建一个模板,我可以插入变量,它们占用所需的字节数(即如果更短则用空格填充,如果更长则截断)
因此,将来,如果模板发生变化,我不需要进行任何代码更改。我只需要更改模板。
我一直在探索JEXL,但我不知道如何用它实现这个目标。
答案 0 :(得分:1)
我能够使用JEXL
实现这一目标 expression = ${utilClass.rpad(car.getLicense(), 10)}
和
JexlEngine jexl = new JexlBuilder().create();
JxltEngine jxlt = jexl.createJxltEngine();
JxltEngine.Expression expr = jxlt.createExpression(expression);
JexlContext context = new MapContext();
context.set("utilClass", new UtilClass());context.set("car", new Car())
expr.prepare(context);
String s= expr.evaluate(context).toString();
我可以从文件中获取表达式,因此如果布局发生变化,我只需更改文件,我就不需要触摸代码了。