john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

read write file

/* 2011-10 read a file and then write it back slightly modified as a different file name
   Needs refactoring: more object based, more methods, try-catch
 */

import java.io.IOException;

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

//import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Properties;


import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ServletWriteFile extends HttpServlet
{
    private static final long serialVersionUID = 1L;
    private static final String relativepath = "/ServletWriteFile/ServletWriteFile" ;
    private static final String inputfilename = "web.xml";

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
  {
        response.setContentType( "text/html" );     // MIME type
        PrintWriter servletresponse = response.getWriter();
        String requestType = request.getMethod();

        outputXHTMLHeader( "Write File Example", servletresponse );
        outputSubmitButtonForm( requestType , servletresponse );

        Properties currentSystemProperties = System.getProperties();
        String fileseperatorsymbol = currentSystemProperties.getProperty( "file.separator" );
        servletresponse.println( "fileseperatorsymbol = " + fileseperatorsymbol + "<br />");

        ServletContext myServletContext = getServletContext() ;
        String realpath = myServletContext.getRealPath( fileseperatorsymbol );
        servletresponse.println( "realpath: " + realpath + "<br />" );
        String fullpath = realpath + fileseperatorsymbol;

        displayFileContents( realpath , "web.xml" , servletresponse );
        printToFileSystem( fullpath , "test.txt" , "written to file system" ,  servletresponse );

        fullpath = realpath + fileseperatorsymbol + "WEB-INF" + fileseperatorsymbol;
        printToFileSystem( fullpath, "test.txt" , "written to subdir WEB-INF" , servletresponse );

        servletresponse.println( "</body></html>" );
        servletresponse.close();
  } //end doGet()



  private static void displayFileContents( String path , String filename , PrintWriter servletresponse )
  {
    servletresponse.println( "opening " + path + filename );

    try{
        FileReader myFileReader = new FileReader( path + filename );
        myFileReader.close();
    }
    catch( IOException e )
    {
        e.printStackTrace();
        servletresponse.println( "error reading " + filename + " from " + path );
    }

  /*
      InputStream myInputStream = myServletContext.getResourceAsStream( inputfilename );
        servletresponse.println( "opening file: " + inputfilename + "<br />" );

        if( myInputStream != null )
        {
            InputStreamReader myInputStreamReader = new InputStreamReader( myInputStream );
            BufferedReader myBufferedReader = new BufferedReader( myInputStreamReader );
            //servletresponse.println( "<pre>" );

            String inputfilename_contents = "";
            while ( ( inputfilename_contents = myBufferedReader.readLine() ) != null)
            {
                  String result = inputfilename_contents.replaceAll("<", "&lt;" );
                  servletresponse.println( result );
            }
            //servletresponse.println( "</pre>" );
            //myInputStreamReader.close();
        }
        */
  } // end displayFileContents

  private static void printToFileSystem( String fullpath, String filename , String message , PrintWriter servletresponse )
  {
        try{
            FileWriter outFile = new FileWriter( fullpath + filename );
            PrintWriter outputstream = new PrintWriter( outFile );
            outputstream.println( message );
            outputstream.close();
            outFile.close();
        }
        catch( IOException e )
        {
            e.printStackTrace();
            servletresponse.println( "error writing " + filename + " to " + fullpath );
        }
  } // end printToFileSystem

    private static void outputXHTMLHeader( String title , PrintWriter servletresponse )
    {
        servletresponse.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">");
        servletresponse.println( "<html xmlns=\"http://www.w3.org/1999/xhtml\">" );
        servletresponse.println( "<head><title>" + title + "</title>" );
        servletresponse.println( "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />" );
        servletresponse.println( "</head>" );
    } //end outputXHTMLHeader

    private static void outputSubmitButtonForm( String requestType ,  PrintWriter servletresponse )
    {
        servletresponse.println("<body>");
      servletresponse.println("Request Type: " + requestType + "<br />\n");
      servletresponse.println( "<form id=\"submitbutton\" action=" + relativepath + " method=\"post\" >" );
      servletresponse.println( "<div><input type=\"submit\" /></div>" );
      servletresponse.println("</form>");
    } //end outputSubmitButtonForm

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        doGet( request, response);
    }
} //end class

  • « Turn off the display from the command line
  • read file web xml »

Published

Nov 1, 2011

Category

java-servlet

~347 words

Tags

  • file 92
  • java-servlet 61
  • read 14
  • write 10