java:文件读取,修改外部,然后再次读取,修改未见

时间:2013-03-04 07:38:59

标签: java

我有一组文件,它们将由一个基于参数的servlet提供。 servlet打开流到所需文件的流,读取,写入http响应并关闭流。现在可以手动修改此文件并保存。然后,下次请求此文件时,servlet会打开一个流到此文件的流,将其写入响应,但我看到内容不是修改后的内容,而是旧内容。

如果我重新启动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,我将不会获得编辑的内容。

1 个答案:

答案 0 :(得分:1)

关联文件更改时,不会动态重新加载资源。资源是源代码树的一部分,随应用程序一起分发。他们预计不会改变。如果您需要这种行为,您的设计会出现严重问题。