2012-12-15 42 views
1

嘿,伙计我试图让我的代码,一旦运行;它会插入到WebContent目录中已经创建的.txt文档中。我在Apache Tomcat v7.0中运行 - 在Eclispe中构建。在tomcat servlet中有java的问题编辑一个.txt文件

CODE:

public static void insertWinner(String winner) throws IOException{ 

     String filename= "Winner.txt"; 
     FileWriter fw = new FileWriter(filename,true); //the true will append the new data 
     fw.write("Winner is" + winner);//appends the string to the file 
     fw.close(); 

    } 

这是被称为BandIO一个java文件BandListServ.java呼吁servlet来插入一个字符串值到上面的代码中完成的。

当我这样做时,什么都没有发生,不知道为什么。

让我知道如果您需要其他信息,再次感谢!

编辑

我改成这样 -

public static void insertWinner(String winner) throws IOException{ 


     FileWriter out = new FileWriter("Winner.txt"); 
     out.write("Hello"); 
     out.close(); 
     out = new FileWriter("Winner.txt", true); 
     out.write(", world!"); 
     out.close(); 

    } 

编辑:

好了,所以我想这个servlet的文件,但没有雪茄里面..

   response.setContentType("text/html"); 


      String filename = "Winner.txt"; 

      ServletContext context = getServletContext(); 


      InputStream is = context.getResourceAsStream(filename); 
      if (is != null) { 
       InputStreamReader isr = new InputStreamReader(is); 
       BufferedReader reader = new BufferedReader(isr); 
       PrintWriter writer = response.getWriter(); 
       String text = "Winner is"; 


       while ((text = reader.readLine()) != null) { 
        writer.println(text); 
       } 
      } 

回答

2

在原则上访问文件系统是用

File file = getServletContext().getRealPath("/Winner.txt"); 

此文件可能为空,即当Web应用程序部署为.war(如此zip格式)时,并且Web服务器未配置为解包战争。

在你的情况下,文件可能有一个并发问题,需要一些锁定。也许你应该使用数据库表。

同样在下次部署时文件可能会丢失。

+0

嗯,我只是试图通过不是servlet本身的.java文件访问该文件,所以getServletContext()不起作用... –

+0

但是不能使用相对路径,并且Web内容目录是已知的只能通过ServletContext。例如,您可以在属性文件中配置硬完整路径。 –

+2

您需要将'ServletContext'的对象引用传递给该方法。看看SO线程 - http://stackoverflow.com/questions/2728877/how-do-i-get-servletcontext-object-in-a-simple-class-file – adatapost