我们目前遇到一些无法重现的文件写入/编码问题。 实际上有两个问题可能有相同的原因:
1)我们有一个应用程序(或同一应用程序的更好的多个实例),它使用速度模板根据用户请求创建一个css文件。但是,在该应用程序的某些实例中(在同一服务器上运行,在相同版本中使用相同的库)会将一些stange字符预先添加到写入文件的CSS字符串中(它不是UTF-8字节顺序标记)。
2)另一个应用程序最近发布了一个附加垃圾字符的Javascript文件(位于EAR中)。大多数情况下,同一个应用程序正确地提供了Javascript文件,但我们无法重现该行为。猜测是写入服务器临时文件夹的文件以某种方式被破坏。
两个应用程序都有一个共同点,即垃圾字符被添加到文件中,因此它可能是相同或类似的原因。
然而,正如我之前所说,我们无法在我们的测试或开发机器上重现这种行为,我们也不知道原因是什么(我们已经检查了设置为UTF-8的文件编码)。
以下是有关该系统的更多信息:
操作系统:Debian GNU / Linux 5.0.4(lenny) JBoss:4.2.3.GA Java:SUn JDK 1.5.0_17-b04
知道可能会发生什么或者我们可以寻找什么?
提前致谢。
编辑:
问题1)的部分代码
...
FileWriter fw;
try
{
String path = tConfigProperties.getProperty( VELOCITYPATHPARAM );
fw = new FileWriter( path + VELOCITYFILEPARM );
fw.write( sw.toString() );//sw is a StringWriter passed to velocity for template processing
fw.close();
}
catch( IOException e )
{
//handle exception and display error message
}
问题2)我们的Java代码不能成为问题,因为我们所做的就是在JSP中链接Javascript。
答案 0 :(得分:1)
我会研究您的代码使用字节缓冲区读取/写入文件的可能性,而不考虑read(byte[])
调用返回的值。 (这听起来很基本,但我最近看到了一个问题,这是根本问题。)
答案 1 :(得分:0)
我想我发现问题的原因没有。 1:速度模板也包含这些字符。但是,我们已经检查了这个并且认为不在那里。但是errare humanum est。 :)
问题没有。 2仍然存在,这更不可重复。