This week's book giveaway is in the Design forum.
We're giving away four copies of Building Microservices and have Sam Newman on-line!
See this thread for details.
The moose likes Servlets and the fly likes Servlet and IO - help needed Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Building Microservices this week in the Design forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "Servlet and IO - help needed" Watch "Servlet and IO - help needed" New topic

Servlet and IO - help needed

Luca Bracci

Joined: Oct 07, 2001
Posts: 8
Hi guys, obviously I am pretty new in servlets and I have a serious problem.
I want to write the data retrieved from the user to a txt file.
That's sounds easy right but I have been trying this for the past 4 hours , infact I cant even write anythign to a file thru the servlet please help ...
It works fine in a main method of a decent class when I run it but it just doesnt write to the file when I run the servlet...
here is the doGet() method :

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
PrintWriter out = response.getWriter();
BufferedWriter pw = new BufferedWriter(new FileWriter("memberfile.txt", true));
pw.write("Please work!!");
System.out.println("Why isn't it working?");
catch(IOException ioe)
System.out.println("IOException thrown in writeMember() method");


Why isn't it writing to the file? is there anything I dont know? ... please help and thanks
Luca Bracci

Joined: Oct 07, 2001
Posts: 8
Oh nevermind!!
I got it working
I as just looking for it in the wrong place, the file actually is being saved in the bin folder ,,, oh I learned somethign new today.... snap I am one slow and dumb person....
Bal Sharma
Ranch Hand

Joined: Sep 19, 2001
Posts: 273
I bet, nop you are not. You figured out solution by yourself. Let me drag you down here for a second. I did same as u did. Text file was saved on bin folder. How can I save text file at my root folder not at bin. Like at /mydev. If you have any clue let me know.
Originally posted by Luca Bracci:
Oh nevermind!!
I got it working
I as just looking for it in the wrong place, the file actually is being saved in the bin folder ,,, oh I learned somethign new today.... snap I am one slow and dumb person....

Bosun Bello
Ranch Hand

Joined: Nov 06, 2000
Posts: 1510
Can't you just specify the absolute directory?
BufferedWriter pw = new BufferedWriter(new FileWriter("YourRootDir\memberfile.txt", true));


So much trouble in the world -- Bob Marley
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 17046

If you give a relative path, there's presently no guarantee WHERE it will go, or even it if will go out to the same directory consistently. A good alternative is to specify the root of your intended directory as an application parameter so you don't have to hard-code it into the program/JSP.
BTW, I always recommend using the Unix form of filenames in Java. Java handles them in an OS-independent way, and you won't get zapped when the compiler turns "YourRootDir\memberfile.txt" into "YourRootDirmemberfile.txt" because the backslash is an ESCAPE character!

An IDE is no substitute for an Intelligent Developer.
Peter den Haan
Ranch Hand

Joined: Apr 20, 2000
Posts: 3252
IMHO there are just two clean ways to access the filesystem in a web-application:
  • Relative to the web-app root. The call getServletContext().getRealPath(relativePath) will return the absolute path for a resource - for instance, getServletContext().getRealPath("WEB-INF/web.xml") will give you the location of the "web.xml" file. The problem with this approach is, some application servers run the entire web-app from a war or a database, not from the filesystem, and will actually return null. If you just need need read-only access, use getServletContext().getResource(relativePath) or getServletContext().getResourceAsStream(relativePath).
  • In a location given by a configurable parameter. The most natural means of configuration is a servlet or application parameter specified in the web.xml file; you can retrieve them using getServletConfig().getInitParameter(name) and getServletContext().getInitParameter(name) respectively.
  • Arguably, access relative to the user's home directory (System.getProperty("user.home")) should be included in the list; I'm not fond of it because it opens the possiblity of conflicts between web-applications. HTH,
    - Peter

    [This message has been edited by Peter den Haan (edited October 17, 2001).]
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link:
subject: Servlet and IO - help needed
It's not a secret anymore!