2011-03-10 55 views
0

我們目前遇到一些我們無法重現的文件寫入/編碼問題。 實際上有兩個問題可能有相同的原因:文件開頭或結尾的垃圾字符

1)我們有一個應用程序(或更好的同一應用程序的多個實例),它使用速度模板來創建用戶請求的css文件。但是,在該應用程序的某些情況下(在同一臺服務器上運行,在相同版本中使用相同的庫)會在寫入該文件的CSS字符串(它不是UTF-8字節順序標記)中添加一些stange字符。

2)另一個應用程序最近發佈了一個Javascript文件(位於EAR中),附加了垃圾字符。大多數時候,同一個應用程序正確地提供該Javascript文件,並且我們無法再現該行爲。猜測會是寫入服務器的臨時文件夾的文件以某種方式被損壞。

這兩個應用程序都有一個共同點,即將垃圾字符添加到文件中,因此可能是相同或相似的原因。但是,正如我之前所說的,我們無法在我們的測試或開發機器上再現這種行爲,並且我們不知道可能是什麼原因(我們已經檢查了文件編碼設置爲UTF- 8)。

下面是一些關於系統的更多信息:

OS:的Debian GNU/Linux的5.0.4(萊尼) JBoss的:4.2.3.GA 的Java:星期日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 。

回答

1

我會研究你的代碼使用字節緩衝區讀/寫文件的可能性,而不是考慮read(byte[])調用返回的值。 (這聽起來很基本,但我最近看到了一個SO問題,這是根本問題。)

+0

+1使我再次檢查問題1的輸入。 – Thomas 2011-03-10 13:08:01

0

我想我發現問題的原因沒有。 1:速度模板也包含這些字符。但是,我們已經檢查過這個,並且思想不在那裏。但是errare humanum est。 :)

問題沒有。 2仍然存在,並且這更不可重現。