Why do we need BufferedReader

Hi All
Can any one let me know the importance of BufferedReader in java.io. How performance is increased when its used.
I didnt find anywhere, the reason to use the BufferedReader .and the reason or how performance is increased when its used
Please let me know if any one has an idea about it ...
Thanks
Nagasreekrishna

JoachimSauer wrote:
Testing is the only way to make sure. Buffering has several positive effects. For one it reduces the number of calls necessary to get the data (system calls and/or Java method calls). It also helps make use of the fact that the OS can only read fixed block sizes from the disc at once (you can't read a single byte from the hard disk, you always read blocks of data). It also involves a small pre-fetch effect in which more data is read than is actually needed at the moment, in order to be able to immediately fulfill later read calls.
All of those together make it rather hard to predict the concrete effect of buffering, the best bet is to test it.Also, I'm not speaking from experience or particular knowledge, but I would assume that some operating systems would themselves buffer data retrieved from a hard-disk, and that the hard-disk itself might buffer some data. So it might not seem to make a huge difference (only along the lines of a context-switch overhead) on one environment but might make all the difference (along the lines of repeated hard-drive seeks) on another with another OS and hard drive. So yeah, testing this can be difficult but you are usually safe in assuming the tiny BufferedReader overhead to save a lot of potential overhead later.

Similar Messages

  • Why Do We Need Constructor With Arguments?

    I understand that constructor is used to create instances.
    We can have constructors with 0 argument or with one/multiple arguments. Why do we need a contructor with arguments? What is the purpose of doing it?
    Thank you for your help.

    There are three general ways to provide constructors, like you said:
    1) Default constructor (no arguments)
    2) One or more constructors with arguments
    3) One or more constructors with arguments as well as a default constructor
    From a design standpoint, the idea is to give as much information needed for constructing an object up front. Look at the standard Java API for some examples (and because I couldn't find a standard class with just a default constructor, one made up):
    public class Foo {
      private long createTime;
      public Foo() {
        createTime = System.currentTimeMillis();
      public String toString() {
        return "This object was created at " + createTime;
    }This code has no reason to take any arguments. It does all construction on its own and already has all the information it needs. On the other hand, look at BufferedReader. There's no possible way this object can ever be constructed without an argument. What's it buffering? It doesn't make sense to ever instantiate new BufferedReader(). It'd be useless. So BufferedReader has no default (no-arg) constructor.
    Sometimes (very often in Java) you want to do both. Let something be instantiated with no arguments, but also provide the option of creating something with more specific details. A good example is ArrayList, which has three constructors:
    public ArrayList() --> Construct an empty ArrayList with the default initial capacity;
    public ArrayList(Collection c) --> Construct an ArrayList populated with the contents of another collection;
    public ArrayList(int capacity) --> Construct an empty ArrayList with a specific initial capacity.
    Sometimes it makes sense just to use the default. Sometimes you want more control over the behavior. Those are the times to use multiple constructors.
    Hope this helps!

  • Archiving cds and why do i need id3 tags

    here comes another one of those questions looking at which codec to use to store music.....i also have tag questions.....
    i'm about to (re-)rip my cd collection and looking at some info re codecs and id3 tags
    now.....i believe i understand the benefits of alac (lower file sizes, keeping id3 tags, lossless compression) v wav(no compression)
    however (and for some out there) if we just entertain the fact that wav may have some minute benefit for me depending on my questions and answers given.....and yes i know wav and alac will sound the same to the human ear - i accept that as a given of lossless compression ......
    points i'd like to outline:
    i am looking to rip my cds, firstly and mostly, for an archiving purpose!! purpose numero uno!!
    i could well want to re-create cds with these archived records in the future
    size of files is of no concern to me at all
    i'm using a mac nowadays
    i will convert most of these files, where needed, to use with a portable music player (i'm not bothered with having, say a wav file and then also converting and having an alac file, as crazy as that sounds)
    this is where i ask for info re the benefits of embedded tags that are found in alac:
    are these tags that important?
    where do they come into play in ripping and later converting music?
    are these uses just bells and whistles that have no benefit to my needs?
    if i rip cds to wav (or aiff), say, using itunes, will cd info and track listings be available on the downloading database (eg itunes) to name these wav files?
    if i then ensure these song files are kept under the album's folder, have i just done what tags do? surely not. that is all i have needed in the past.
    this is where i feel i may be really missing what id tags (can) do
    are tags more than just managing song files and where they belong and where they have come from?
    is it just a convenience of not personally managing your song files (as per previous paragraph)?
    (in the past i had ripped cds to mp3 codec. i think i used "cd rip" or something like that on my pc.
    my mp3 files were individually named and sorted and kept under album folders under artist name folders.
    apart form the very odd occasion all track and album info i needed was found on a database that was attached to the ripping software.
    i never had a problem managing/maintaining these files and folders.)
    i welcome some enlightenment on some of my questions above and other info that may be relevant
    and yes, i understand that music will sound the same as a wav file or alac file - but humour me re using wav and tell me why i need id3 tags
    i guess the crux of it is:
    why do i need id3 tags?
    does my managing of my song file in the album folder do what tags do?
    what problems/shortcomings/headaches may i encounter by not having those tags if i use wav as opposed to alac?
    what do i not know about these little buggers?
    what codec is best for my purpose of archiving and re creating of cds (for playing in cd players)
    thanks in advance for your input and any clarity that i may experience through this
    peter t
    excuse my long windedness (i have spent some time editing this entry)

    Crows2012 wrote:
    as mentioned earlier if i just have songs (wav) in album folders, when i import these albums into itunes, do you know if these will come up under AN album with their file names purely using my filename setup (but with no artwork)?
    Yes, iTunes will read the filename, such as "Track 1" or something else and display it. But nothing else. No Album or Artist.
    so the tracks will remain grouped as an album based on their initial folder and the albums and tracks as per file name?
    Crows2012 wrote:
    also, does aiff have limitations (apart from the full size of the file)?
    I'm not sure I understand what you mean. For all practical purposes AIFF and WAV are exactly the same thing. They're just file containers.
    i thought that i had read somewhere that aiff tags could run into some issues with its tags - ie may not always be transferred 100% accurately with certain players (or hardware maybe)
    Crows2012 wrote:
    and how do these codecs work re-creating an album for the purposes of playing in a cd player? - this is a crucial question for the purpose of my archiving/backup of CDs THEMSELVES
    That's actually going to depend on what burning software you use. Once you rip the tracks to whatever file container you choose (WAV/AIFF/ALAC) you'll never really exactly re-create the album. But for archiving purposes all three file containers will do what you want, which is to create a lossless archive. AIFF has the advantage of supporting embedded ID3, which ALAC has the additional advantage of the files also being about half the size of AIFF/WAV files.
    i was thinking that maybe wav was able to recreate an album (in effect duplicate one) if my cd was lost or damaged in the future. i was thinking this IF when ripping to wav everything is unchanged (unless there is other data on the original cd). and maybe only possible with wav. the purpose for this would be to play recreated cds on my cd player
    any idea on this one?
    (i havent looked too thoroughly on this angle but i'll keep googling on this one)
    much appreciate all info thus far
    peter t

  • I want to know that if i want to download facebook on my iphone 4 or any other apps then it ask me put my card details for payment. why is that. if they are free then why do i need to give my card details?please help me anyone.

    I want to know that if i want to download facebook on my iphone 4 or any other apps then it ask me put my card details for payment. why is that. if they are free then why do i need to give my card details?please help me anyone.

    Just select no credit card as outlined here:
    http://support.apple.com/kb/ht2534

  • Why do I need to connect my Ipad mini with my Mac Book Pro via iCloud?

    Why do I need to connect my Ipad mini with my Mac Book Pro via iCloud? I don't have iCloud on my MacBook Pro and only intend to use the mini to check e-mail and use Garage Band and Photo Booth for song writing when traveling . . .

    Thanks Community! I solved the problem. In fact it was not a problem but lack of understanding. These guys at Apple are way ahead in thir thinking. I will try to explain as short as I can.
    In Lion, ihe Prefferences/Display show only two choices: 6-7 steps of resolution and some color tab. No two screens, no two display to overlap, nothing for us to do. "That was the problem"! Everything is automatic.
    When I connected the HDMI cable to the Miniport into a T-bolt slot, the TV screen showed the "spiral galaxy" how Zyriab is calling it. In fact he gave me the best clue. That shows the connection is good. But where is the Mac Book image?
    You have to drag it to the right out of the Mac Book display area, and "voila!" it will continue on the TV screen. The same with the mouse pointer, push it out ofthe Mac Book display area and you see it on the TV sreen. Good image, you can keep the max resolution, etc. The sound is still on the Book's speakers. I have to figure that out.
    Thank everybody, especialy Zyriab, ne was the closest.
    High regards to everybody

  • Keynote and pages are now free, but why do i need to pay for them still when there now free?!?

    keynote and pages are now free, but why do i need to pay for them still when there now free?!?

    Users can obtain the iWorks and iLife applications free, if they purchased a Mac after the beginning of October 2013.
    Older Mac purchases require a paid purchase of these applications.

  • Why do I need to start up Screen Sharing twice to get it to work ?

    I have an Intel Mac Mini connected to my TV, so I started using Screen Sharing from my MacBook Pro to be able to work on it when others were watching TV.
    Both Macs used to have OSX 10.5 Leopard, and everything worked fine.
    Now they both have OSX 10.6 Snow Leopard, and whenever I startup Screen Sharing, the connection-windows asking for my Name & Password comes up properly, but then it hangs... it stays in "Connecting..." for ever (litteraly).
    I'm not able to quit or force-quit the connection-window by then, so it stays in view...
    (Screen Sharing isn't even listed in the force-quit list as a running app)
    but...
    when I just try Screen Sharing again, I get connection immediately and it seems to work flawlessly...
    ...it's just that the connection-window is impossible to quit...
    it stays in view an is really annoying...
    this looks really crappy...
    can anyone tell me why I do need to startup Screen Sharing twice to get it to work ?
    Is this a bug ?
    (If so : please apple fix this a.s.a.p.)
    ...or am I doing something wrong ?
    (if so : what am I doing wrong ? and how can I get rid of this annoying screen ?)
    Thank you for your kind reply.
    Toon.B

    it's October and this really annoying problem still exists !
    the unnamed screensharing-loginwindow keeps "Connecting...", and I'm unable to shut it down...
    ...even after my screen sharing session is over
    ...even force-quitting is impossible (this 'app' just isn't showing up in the force-quit-window...)
    please Apple - fix this ; under 10.5 it was working great !
    Does anyone have any idea how to fix this ?
    (besides restarting my Mac)
    Thanks !
    Toon.B

  • Why do I need to catch this exception?

    Hello all
    This is a question about exception handling. I have to build a diary application that lets you save reminders on particular dates using xml. Just to make it a little tougher, I was not allowed to use the Calendar class. This is the code I wrote:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.text.*; 
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import java.io.*;     
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;                                                                                                                                                                                                                         
    import static java.lang.Math.*;
    public class CalendarAssignment extends JFrame implements ActionListener
         int MonthLength [] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
         public JButton [] days = new JButton[43];
         private JLabel lbl, reminderlbl;
         private JPanel top, grid, remindercenter, reminderbottom;
         private JFrame reminderframe;
         private JTextField year1, reminderinput, dayno;
         private JComboBox months;
         private Container container;
         private JButton fetch, save, cancel;
         private Document doc;
         private File file;
         private Node node;
         private String year, month, day;
              public static void main( String[] args ) {
                   CalendarAssignment c = new CalendarAssignment( );
                   c.setSize( 400, 300 );
                   c.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                   c.show( );
              public CalendarAssignment( ) {
                   int CurrentYear, CurrentMonth;
                   String YearString, MonthString, Now;
                   Date today;
                   container = getContentPane( );
                   container.setLayout( new BorderLayout( ) );
                   SimpleDateFormat DateFormatter;
                   DateFormatter = new SimpleDateFormat( "MM.yyyy" );
                   today = new Date( );
                   Now = DateFormatter.format( today );
                   MonthString = Now.substring( 0,2 );
                   YearString = Now.substring( 3,7 );
                   CurrentMonth = Integer.valueOf( MonthString );
                   CurrentYear = Integer.valueOf( YearString );
                   top = new JPanel( );
                        String [] items = { "January", "February", "March", "April", "May", "June",
                                      "July", "August", "September", "October", "November",
                                      "December" };
                        months = new JComboBox( items );
                        months.setEditable( false );
                        months.setSelectedIndex( CurrentMonth - 1 );          
                        year1 = new JTextField( );
                        year1.setText( YearString );
                        year1.setEditable( true );
                        year1.setHorizontalAlignment( year1.CENTER );
                        fetch = new JButton( "Fetch Month" );
                        fetch.addActionListener( this );
                        top.setLayout( new GridLayout( 1, 3, 20, 0 ) );
                        top.add( months );
                        top.add( year1 );
                        top.add( fetch );
                   grid = new JPanel( );
                        grid.setLayout( new GridLayout( 7, 7, 0, 0 ) );
                        String [] week = { "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun" };
                        for ( int a = 0; a < 7; a ++ ) {
                                  JLabel lbl = new JLabel( week[a], JLabel.CENTER );
                                  grid.add( lbl );
                        for ( int i = 0; i < 42; i ++ ) {
                                  days[i] = new JButton( );
                                  grid.add( days[i] );
                                  days.addActionListener( this );
                        DrawCalendar( CurrentMonth, CurrentYear );
                        container.add( top, BorderLayout.NORTH );
                        container.add( grid, BorderLayout.CENTER );
              private void DrawCalendar( int SelectMonth, int SelectYear ) {
                        int DisplayMonthLength, Buttons;
                        String ButtonID = "";
                        int OffSet = MonthStart( SelectMonth, SelectYear );
                        DisplayMonthLength = MonthLength [SelectMonth - 1];
                        if ( SelectMonth == 2 )
                             DisplayMonthLength += LeapYear( SelectYear );
                        for ( Buttons = 1; Buttons < 43; Buttons ++ ) {
                             if ( ( Buttons <= OffSet ) || ( Buttons > ( DisplayMonthLength + OffSet ) ) ) {
                                  ButtonID = "";
                                  days[Buttons-1].setEnabled( false );
                             else {
                                  ButtonID = Integer.toString( Buttons - OffSet );
                                  days[Buttons-1].setEnabled( true );
                        days[Buttons-1].setLabel( ButtonID );
                        grid.add( days[Buttons-1] );
              private int LeapYear( int year ) {
                        int FourHundred, OneHundred, Fourth;
                        FourHundred = year % 400;
                        OneHundred = year % 100;
                        Fourth = year % 4;
                        if( ( ( FourHundred == 0 ) ) || ( ( OneHundred != 0 ) && ( Fourth == 0 ) ) )
                             return ( 1 );
                        else
                             return ( 0 );
              private int MonthStart( int Month, int Year ) {
                        int OffSet, LastMonths, BeforeOrAfter, Years;
                        int AllDays = 0;
                        int YearDays = 365;
                        int YearMonths = 12;
                        BeforeOrAfter = Year - 2006;
                        Years = abs( BeforeOrAfter );
                        if( BeforeOrAfter != 0 )
                             BeforeOrAfter = BeforeOrAfter / Years;
                        switch( BeforeOrAfter ) {
                             case 1:
                                  for( int a = 2006; a < Year; a ++ ) {
                                       AllDays += YearDays + LeapYear( a );
                                  AllDays += LastMonthsCalc( Month, Year );
                             break;
                             case -1:
                                  for( int a = 2005; a > Year; a -- ) {
                                       AllDays += YearDays + LeapYear( a );
                                  for( LastMonths = YearMonths; LastMonths >= Month; LastMonths -- ) {
                                       AllDays += MonthLength[LastMonths - 1];
                                       if( LastMonths == 2 )
                                            AllDays += LeapYear( Year );
                             break;
                             default:
                                  if( Month > 1 )
                                       AllDays += ( LastMonthsCalc( Month, Year ) );
                        OffSet = AllDays % 7;
                        if( BeforeOrAfter ==( -1 ) )
                             return( 6 - OffSet );
                        else if( OffSet > 0 )
                             return( OffSet - 1 );
                        else
                             return( 6 );
              private int LastMonthsCalc( int Month, int Year ) {
                        int Counter;
                        int days = 0;
                        for( Counter = 1; Counter < Month; Counter ++ ) {
                             days += MonthLength[Counter - 1];
                             if( Counter == 2 )
                                  days += LeapYear( Year );
                        return( days );
              public void CreateReminder( String buttonID, String yearID, String monthID ) {
                        reminderframe = new JFrame( );
                        reminderlbl = new JLabel( );
                        reminderframe.setLayout( new GridLayout( 2, 1, 0, 0 ) );
                        remindercenter = new JPanel( );
                             reminderlbl = new JLabel( "Please type in reminder to be saved for " + buttonID + " " + monthID + " " + yearID + ":", JLabel.CENTER );
                             reminderinput = new JTextField( 30 );
                             reminderinput.setHorizontalAlignment( reminderinput.CENTER );
                             reminderinput.setEditable( true );
                             remindercenter.setLayout( new GridLayout( 2, 1, 0, 0 ) );
                             remindercenter.add( reminderlbl );
                             remindercenter.add( reminderinput );
                        reminderbottom = new JPanel( );
                             save = new JButton( "Save" );
                             save.addActionListener( this );
                             cancel = new JButton( "Cancel" );
                             cancel.addActionListener( this );
                             dayno = new JTextField( buttonID );
                             dayno.setEditable( false );
                             dayno.setEnabled( false );
                             dayno.show( false );
                             reminderbottom.setLayout( new FlowLayout( ) );
                             reminderbottom.add( save );
                             reminderbottom.add( cancel );
                             reminderbottom.add( dayno );
                        reminderframe.setSize( 500, 75 );
                        reminderframe.add( remindercenter );
                        reminderframe.add( reminderbottom );
                        reminderframe.pack( );
                        reminderframe.show( );
              public void SaveReminder( String dayID, String yearID, String monthID ) throws Exception {
                        file = new File( "Diary.xml" );
                        doc = DocumentBuilderFactory.newInstance( ).newDocumentBuilder( ).parse( file.toURL( ).toString( ) );
                        String year = yearID;
                        String month = monthID;
                        String day = dayID;
                        //System.out.println( year );
                        //System.out.println( month );
                        //System.out.println( day );
                        CreateEntry( doc.getDocumentElement( ) );
                        writeXmlFile( );
              public boolean CreateEntry( Node node ) {
                        Node searchNode;
                        searchNode = getYear( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Year" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", year );
                        node = searchNode;
                        searchNode = getMonth( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Month" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", month );
                        node = searchNode;
                        searchNode = getDay( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Day" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", day );
                        node = searchNode;
                        String entry = reminderinput.getText( );
                        Node textNode = doc.createTextNode( entry );
                        node.appendChild( textNode );
                        return true;
              private Node getYear( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if(node.getNodeName( ).equals( "Year" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == year )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private Node getMonth( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if( node.getNodeName( ).equals( "Month" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == month )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private Node getDay( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if( node.getNodeName( ).equals( "Day" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == day )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private void writeXmlFile( ) throws Exception {
                   Source source = new DOMSource( doc );
                        Result result = new StreamResult( file );
                   Transformer xformer = TransformerFactory.newInstance( ).newTransformer( );
                   xformer.setOutputProperty( OutputKeys.INDENT,"yes" );
                   xformer.setOutputProperty( OutputKeys.DOCTYPE_SYSTEM,"Diary.dtd" );
                   xformer.transform( source, result );
              public void actionPerformed( ActionEvent e ) {
                        String IDButton = e.getActionCommand( );
                        String IDYear = year1.getText( );
                        Object IDMonthObj = months.getSelectedItem( );
                        if( e.getSource( ) == fetch ) {
                             String YearText = year1.getText( );
                             int YearNumber = Integer.valueOf( YearText );
                             int MonthsIndex = months.getSelectedIndex( ) + 1;
                             DrawCalendar( MonthsIndex, YearNumber );
                        else if( e.getSource( ) == cancel ) {
                             reminderframe.hide( );
                        else if( e.getSource( ) == save ) {
                             String IDDay = dayno.getText( );
                             String IDMonth = String.valueOf( IDMonthObj );
                             SaveReminder( IDDay, IDYear, IDMonth );
                        else {
                             String IDMonth = String.valueOf( IDMonthObj );
                             Toolkit.getDefaultToolkit( ).beep( );
                             int n = JOptionPane.showConfirmDialog( null, "Set reminder on this date?", "Question", JOptionPane.YES_NO_OPTION );
                             if( n == JOptionPane.YES_OPTION ) {
                                  CreateReminder( IDButton, IDYear, IDMonth );
    If you compile it, you will realise that I get an error about exception handling. My lecturer gave me an example code of how to do the same thing without using a GUI:
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import java.io.*;
    import java.util.*;
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    public class CallDOM
         Document doc;
         File file;
         Scanner input;
         int year, month, day;
         String currentYear, currentMonth;
         public static void main(String args[]) throws Exception
              CallDOM cd=new CallDOM();          
         CallDOM() throws Exception
              file=new File("Diary.xml");
              //create DOM from file
              doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file.toURL().toString());
              input=new Scanner(System.in);
              System.out.println("1) Create entry");
              System.out.println("2) Read entry");
              System.out.println("3) Show Diary");
              System.out.println("4) Quit");
              int choice=input.nextInt();
              while(choice!=4)
                   switch(choice)
                        case 1: GetDate();CreateEntry(doc.getDocumentElement());break;
                        case 2: GetDate();ReadEntry(doc.getDocumentElement());break;
                        case 3: ShowDiary(doc.getDocumentElement());
                   System.out.println("1) Create entry");
                   System.out.println("2) Read entry");
                   System.out.println("3) Show Diary");
                   System.out.println("4) Quit");
                   choice=input.nextInt();
              writeXmlFile();
         public void GetDate()
              System.out.println("Enter date (dd mm yyyy)");
              day=input.nextInt();
              month=input.nextInt();
              year=input.nextInt();
         public boolean ReadEntry(Node node)
              node = getYear(node);
              if(node==null) return false;
              node = getMonth(node);
              if(node==null) return false;
              node = getDay(node);
              if(node==null) return false;
              node = node.getFirstChild();
              while(node!=null)
                   System.out.println(node.getNodeValue().trim());     
                   node=node.getNextSibling();
              return true;               
         public boolean CreateEntry(Node node)
              Node searchNode;
              searchNode = getYear(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Year");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(year));
              node = searchNode;
              searchNode = getMonth(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Month");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(month));
              node = searchNode;
              searchNode = getDay(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Day");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(day));
              node = searchNode;
              System.out.println("Enter Text");
              String entry=input.next();
              entry+=input.nextLine();
              Node textNode = doc.createTextNode(entry);
              node.appendChild(textNode);
              return true;               
         public void ShowDiary(Node node)
              Stack<Node> stack=new Stack<Node>();
              Node child;
              stack.push(node);
              while(!stack.empty())
                   node = stack.pop();
                   if(ProcessNode(node))
                        child = node.getLastChild();
                        while(child!=null)
                             stack.push(child);
                             child = child.getPreviousSibling();
         private boolean ProcessNode(Node node)
              if(node.getNodeName().equals("Year"))
                   currentYear=node.getAttributes().item(0).getNodeValue();
              if(node.getNodeName().equals("Month"))
                   currentMonth=node.getAttributes().item(0).getNodeValue();
              if(node.getNodeName().equals("Day"))
                   System.out.print(node.getAttributes().item(0).getNodeValue()+"/"+
                                            currentMonth+"/"+currentYear+": ");
                   node=node.getFirstChild();
                   while(node!=null)
                        System.out.println(node.getNodeValue().trim());
                        node=node.getNextSibling();
                   return false;
              return true;               
         private Node getYear(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Year")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==year)
                             return node;
                   node = node.getNextSibling();                    
              return null;
         private Node getMonth(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Month")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==month)
                        return node;
                   node = node.getNextSibling();                    
              return null;
         private Node getDay(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Day")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==day)
                        return node;
                   node = node.getNextSibling();                    
              return null;
         private void writeXmlFile() throws Exception
            Source source = new DOMSource(doc);
            Result result = new StreamResult(file);
            Transformer xformer = TransformerFactory.newInstance().newTransformer();
            xformer.setOutputProperty(OutputKeys.INDENT,"yes");
            xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"Diary.dtd");
            xformer.transform(source, result);
    }My question is, why does the exceptions in the example code not need to be caught? And why do I have to catch the exceptions in my code? Several exceptions are thrown in the example code, but there is no catch statement.
    Thanks for any advice!!

    Since your question didn't come with any relevant details, and since you have huge steaming piles of irrelevant code, all I can give is a general answer to "Why do I need to catch this exception?"
    [url http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html]Exception tutorial at http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html
    Here's a quick overview of exceptions:
    The base class for all exceptions is Throwable. Java provides Exception and Error that extend Throwable. RuntimeException (and many others) extend Exception.
    RuntimeException and its descendants, and Error and its descendants, are called unchecked exceptions. Everything else is a checked exception.
    If your method, or any method it calls, can throw a checked exception, then your method must either catch that exception, or declare that your method throws that exception. This way, when I call your method, I know at compile time what can possibly go wrong and I can decide whether to handle it or just bubble it up to my caller. Catching a given exception also catches all that exception's descendants. Declaring that you throw a given exception means that you might throw that exception or any of its descendants.
    Unchecked exceptions (RuntimeException, Error, and their descendants) are not subject to those restrictions. Any method can throw any unchecked exception at any time without declaring it. This is because unchecked exceptions are either the sign of a coding error (RuntimeException), which is totally preventable and should be fixed rather than handled by the code that encounters it, or a problem in the VM, which in general can not be predicted or handled.

  • Why do I need to use MOLGA?

    I know that this is a very basic question, but I have been asked why do we need to have a new MOLGA for every country; what I know of is:
    1.     Is the standard method of supporting multi-country (Global) HCM.  MOLGA is central to the SAP HCM solution.
    2.     The correct screens are shown in PA30 to maintain the personnel data in the correct formats for social security or equivalent number, form of address, addresses, bank details and so on.
    3.     The correct infotypes can be made available by MOLGA, where there are particular pieces of information required on a country by country basis u2013 therefore reducing the risk of non compliance
    4.     Correct ESS screens are available
    5.     Payroll available by country.  For example the payroll program is run per country using the MOLGA PC00_Mxx_calc, where xx is the country code, therefore for GB it is PC00_M08_calc.
    But apparently this is not a compelling enough reason - can anyone help with more good reasons?

    Hi Marina
    hope you are doing good.
    Globalized firms need Integrated systems with Independent County Legal, Labor, Taxation ,Currency , Language requirements.
    So a Global ERP System will help to achieve this without compromising the local requirements.
    I shared my experience , hope it sound sane.
    Regards
    Rohit.S

  • What am I doing wrong with the isNew() method?  and why do I need the other methods?

    I have coded an include jsp like this.
              <%@page language="Java"%>
              <%@page import="javax.servlet.http.HttpSession"%>
              <%!
              String iContextPath;
              String iCommonPath;
              String iImagesPath;
              %>
              <%
              iContextPath = request.getContextPath();
              iCommonPath = iContextPath + "/common";
              iImagesPath = iCommonPath + "/images";
              System.err.println(" here ");
              HttpSession thisSession = request.getSession( false );
              if( thisSession.isNew() ){
              System.err.println("isnew");
              response.sendRedirect( iContextPath + "/common/login.jsp" );
              %>
              Now I also have a redirect.jsp in the root of an application that contains
              this.
              <html>
              <body>
              <%
              System.err.println("Redirecting at this time from the root");
              response.sendRedirect( request.getContextPath() + "/secureArea/");
              %>
              </body>
              </html>
              And I have a logout.java servlet that looks like this.
              package com.pch.epics;
              import java.io.IOException;
              import javax.servlet.ServletException;
              import javax.servlet.http.HttpServlet;
              import javax.servlet.http.HttpServletRequest;
              import javax.servlet.http.HttpServletResponse;
              import weblogic.servlet.security.ServletAuthentication;
              public class Logout extends HttpServlet{
              private static final String CONTENT_TYPE = "text/html";
              //Initialize global variables
              public void init() throws ServletException{
              //Process the HTTP Get request
              public void doGet( HttpServletRequest request, HttpServletResponse
              response ) throws ServletException, IOException{
              String username = "";
              if( request.getUserPrincipal() == null ){
              username = "Unknown";
              } else {
              username = request.getUserPrincipal().getName();
              System.err.println( "ePics logging out '" + username + "'" );
              request.getSession( false ).invalidate();
              ServletAuthentication.logout( request );
              ServletAuthentication.invalidateAll( request );
              ServletAuthentication.killCookie( request );
              response.sendRedirect( request.getContextPath() );
              //Process the HTTP Post request
              public void doPost( HttpServletRequest request, HttpServletResponse
              response ) throws ServletException, IOException{
              doGet( request, response );
              //Clean up resources
              public void destroy(){
              First of all, why won't the isNew() report a new session in the server log?
              EVERY request coming in says it's an old request (ie it's not new). The
              J2EE Applications and BEA WebLogic Server book from BEA says this should
              work.
              My second question is why do I need to do those three lines from
              ServletAuthentication to logout a user? Ok, maybe I'm from the MS world,
              but that seems excessive, especially since I've already done a
              session.invalidate() right before it, but the bea docs say I'm required to
              do all four!
              

    When you invalidate a session. You invalidate the session of the web
              application that your jsp/servlet is part of. It is possible to have more
              than one web application on WLS and have them share a authentication info.
              While these applications share authentication they do not share their
              sessions so because of that calling session invalidate does not kill all the
              sessions. ServletAuthentication is needed to kill all the sessions and do a
              complete logout from WLS.
              "Flip" <[remove][email protected]> wrote in message
              news:[email protected]...
              > I have coded an include jsp like this.
              >
              > <%@page language="Java"%>
              > <%@page import="javax.servlet.http.HttpSession"%>
              > <%!
              > String iContextPath;
              > String iCommonPath;
              > String iImagesPath;
              > %>
              > <%
              > iContextPath = request.getContextPath();
              > iCommonPath = iContextPath + "/common";
              > iImagesPath = iCommonPath + "/images";
              >
              > System.err.println(" here ");
              > HttpSession thisSession = request.getSession( false );
              > if( thisSession.isNew() ){
              > System.err.println("isnew");
              > response.sendRedirect( iContextPath + "/common/login.jsp" );
              > }
              >
              > %>
              >
              > Now I also have a redirect.jsp in the root of an application that contains
              > this.
              > <html>
              > <body>
              > <%
              > System.err.println("Redirecting at this time from the root");
              > response.sendRedirect( request.getContextPath() + "/secureArea/");
              > %>
              > </body>
              > </html>
              >
              > And I have a logout.java servlet that looks like this.
              > package com.pch.epics;
              >
              > import java.io.IOException;
              > import javax.servlet.ServletException;
              > import javax.servlet.http.HttpServlet;
              > import javax.servlet.http.HttpServletRequest;
              > import javax.servlet.http.HttpServletResponse;
              > import weblogic.servlet.security.ServletAuthentication;
              >
              > public class Logout extends HttpServlet{
              > private static final String CONTENT_TYPE = "text/html";
              > //Initialize global variables
              > public void init() throws ServletException{
              > }
              >
              > //Process the HTTP Get request
              > public void doGet( HttpServletRequest request, HttpServletResponse
              > response ) throws ServletException, IOException{
              > String username = "";
              > if( request.getUserPrincipal() == null ){
              > username = "Unknown";
              > } else {
              > username = request.getUserPrincipal().getName();
              > }
              > System.err.println( "ePics logging out '" + username + "'" );
              > request.getSession( false ).invalidate();
              > ServletAuthentication.logout( request );
              > ServletAuthentication.invalidateAll( request );
              > ServletAuthentication.killCookie( request );
              > response.sendRedirect( request.getContextPath() );
              > }
              >
              > //Process the HTTP Post request
              > public void doPost( HttpServletRequest request, HttpServletResponse
              > response ) throws ServletException, IOException{
              > doGet( request, response );
              > }
              >
              > //Clean up resources
              > public void destroy(){
              > }
              > }
              >
              > First of all, why won't the isNew() report a new session in the server
              log?
              > EVERY request coming in says it's an old request (ie it's not new). The
              > J2EE Applications and BEA WebLogic Server book from BEA says this should
              > work.
              >
              > My second question is why do I need to do those three lines from
              > ServletAuthentication to logout a user? Ok, maybe I'm from the MS world,
              > but that seems excessive, especially since I've already done a
              > session.invalidate() right before it, but the bea docs say I'm required to
              > do all four!
              >
              >
              >
              

  • HT201250 What is Airport Utility and why do I need to access this in order to backup my iMac using Time Machine...PLEASE??

    What is Airport Utility and why do I need to access Airport witeless devices in order to backup my iMac using Time Machine...HELP!!! PLEASE??

    AirPort Utility is required to configure an Apple AirPort Base Station or Time Capsule.
    Time Machine can use a Time Capsule or a locally connected volume. You only need to use AirPort Utility if you are using a Time Capsule.

  • What are smart mailboxes and why do i need both smart and "normal" ones?

    What are smart mailboxes and why do I need both smart and "normal" mailboxes?

    Hi Kingoftypos,
    Thanks for that clarification. So, now it appears that the ultimate purpose of a Smart Mailbox is to point to all emails that meet the criteria in a single place, so if they are spread among several mailboxes, you will be able to see them all together. Here is an article from Apple that describes it:
    A Smart Mailbox displays in one location messages that are stored in other mailboxes, so you don’t have to move messages between mailboxes. The messages displayed by a Smart Mailbox are based on criteria you define, and are automatically updated to include new messages that match your criteria. For example, you might create a Smart Mailbox that displays all messages found in all mailboxes from a specific sender.
    If you change a message in a Smart Mailbox, such as marking the message as read or unread, or moving or deleting the message, the change is reflected in the mailbox where the message is actually stored.
    So, adam, I would think that, if you had mail going to a lot of different places, and wanted to be able to see a particular set of those in a single place, you would use a smart mailbox. Maybe use the rules to direct your mail to different places to start with, but a smart mailbox to bring a set of common ones all together into a single smart mailbox?
    Maybe you have Rules move your Amazon mail to an Amazon folder and your Apple mail to an Apple folder, but then you have a Smart Mailbox that contains any mail that has the word "Receipt" in the Subject line?
    Just a thought....
    Cheers,
    GB

  • What is 'Growl' and why do I need it?

    My system keeps telling me to install GROWL.
    What is it and why do I need it?
    Harold

    Growl is a third party utiltiy for manipulating parts of the OS and displaying "notifications". It sounds like you once had it installed. To remove go here...
    http://growl.info/documentation/growl-package-removal.php
    EDIT: It's not your system telling you, it's a Growl notification.
    -mj
    Message was edited by: macjack

  • What are Layers? And why do I need them?

    WHAT ARE LAYERS? AND WHY DO I NEED THEM?
    Layers are an essential part of Photoshop. With Layers you can separate pictures or design elements from each other, as if they are stacked on pieces of glass. With all elements separate, you can move or change them independent of each other.
    Layers are used for many tasks, including improving your images' color or tone; merging two or more images in one Photoshop file; and creating Web designs and animations.
    LAYER BASICS - VIDEO 06:41 min.
    WORKING WITH LAYERS - VIDEO 11:16 min.
    KEY CONCEPT: LAYER
    PHOTOSHOP/ LAYERS BASICS - Reference Guide

    After creating the mask and applying adjustment, you can also adjust and change layer mask using selection tools or, the most common way, using brush tools.
    To have a more accurate preview of what are you doing, Alt + click on the layer mask thumbnail to show the mask in the image area.
    At this point, you will have a layer mask on your screen in large view, so it is easy to fine tune it, but you wont see how that affects your image.
    To seean  instant preview how changes on layer mask affects the adjustments, use New Window for (name of your image) from Window > Arrange.
    Here is a more detailed tutorial on the topic: New Window for.. Command in Adobe Photoshop.

  • What Is, And Why do I need it: ExpressCard/34 Slot?

    In the very near future I will be obtaining a 17" MBP. That's just savvy, except for one minor detail. What is an ExpressCard/34 slot, why do I need one, why would it have been included in this particular size MBP and what can I shove in there?

    The expresscard slot is for expansion purposes. it allows a low cost esata connection to your macbook pro. you can plug an esata adapter in and then use one of many external esata enclosures. "apiotek ec-0003d" costs about 40 bucks and will let you add 2 non-bootable external esata enclosures then can run at 3Gbps. fw800 runs at 800Mbps..
    "OWC esatat sata expressCard/34Adapter" bootable 1 esata adapter is 19 bucks it will let you add 1 esata enclosure at speeds up to 3Gbps.
    so if you get the non bootable one you can add 2 enclosures like "sans digital towerStor Ts2ct". that would be up to 4Tb for each one total of 8tb far faster then fire wire. if you get the bootable 1 esata type you could add 1 external at 4tb. this lets you macbook pro boot from a 4tb external at internal speeds. kind of gives you the ability to make you laptop a real desk top when you want it to be that. Then back to a real lap top by unplugging it. Not trying to sell any of the above items I just happen to use them.
    This option was pulled from iMac's a real drag as iMacs could use more fast enclosures.

Maybe you are looking for