hi Amitabha Batranab
I think you confused because of the term Wrap . Well let me explain.
The PrintWriter has these constructors
PrintWriter(File f) (as of
Java 5)
PrintWriter(
String filePath)(as of Java 5)
PrintWriter(OutputStream os)
PrintWriter(Writer writer)
so when you want to work with the PrintWriter atleast you need any one of the objects (File ,String ,OutputStream ,Writer )
As you know the Writer and OutputStream are abstract classes they can be instantiated through their concrete sub -classes only.
coming to your doubt in which order you need to use these . Lets take an example to write a String in the File through Writer. you can use the any of the following
1) creating File Object pointing to existing File , Passed to the
PrintWriter (new Fashion in java 5)
2) create String with the valid path of the File Passed to the
PrintWriter (new Fashion in java 5)
3) create a FileOutputStream pointing to the File , passed to the
PrintWriter (old fashion

)
4) create a type of writer may be a BufferdWriter which again need a FileWriter . Create the both and passed to the PrintWriter constructor.
hope i'm clear to you . This we are calling as a decorator
pattern used in Java you can see more details about this in
Head First Design Patterns - Kathy Sierra (More cleared Explanation)
Decorator Pattern [ September 05, 2006: Message edited by: Arul Prasad ]