我有一組文件,將由servlet根據參數提供。 servlet將流打開到所需的文件,讀取,寫入http響應並關閉流。現在這個文件可以手動修改並保存。然後下一次對這個文件發出請求時,servlet會打開一個流到這個文件的流,將它寫入響應,但是我看到這個內容不是修改過的內容,它是舊的。java:文件讀取,修改外部,然後再次讀取,修改未見
如果我重新啓動tomcat,servlet會響應修改後的內容。是否可以在不重新啓動的情況下讀取修改後的內容?
它不是tomcat緩存,從文件讀取器本身讀取的字符串不變。
謝謝!
這裏的servlet-
InputStream fhandle=this.getClass().getClassLoader().getResourceAsStream("responses/"+file);
if(fhandle!=null){
Reader fr=new InputStreamReader(fhandle);
PrintWriter out=resp.getWriter();
int a=-1;
FileWriter fos=new FileWriter("copyFile.xml"); //to compare what's read with actual file
while((a=fr.read())>=0){
fos.write(a);
out.write(a);
}
out.flush();
fos.close();
fr.close();
fr=null;
fhandle.close();
fhandle=null;
System.gc();
}
else
System.out.println(file+" not found");
的內容擊中了第一次的servlet後,我將編輯該文件並保存它。現在我再次爲同一個文件命中同一個servlet,並且我不會獲得編輯的內容。
你可以提供更多關於文件修改的代碼嗎?這種錯誤的正常問題可能是你忘記關閉文件流後修改 – 2013-03-04 08:22:56