Tutorial Tutorial Step 10

Step 9: Add code to read text from a file into the TextArea

Now let's add code to actually read text from the user-selected file into the TextArea. You need to add a new method to your class to perform the actual open file operation. You can put this method anywhere in your class (outside of other methods). A good place for it is just after the code for the jbInit() method. Call this method openFile().

  1. Click the Source tab at the bottom of the AppBrowser and insert the following code:
    /**
     * Open named file; read text from file into textArea1; report to statusBar.
     * @param fileName the name of the text file on disk
     */
    void openFile(String fileName)
    {
      try
      {
        // Open a file of the given name.
        File file = new File(fileName);
    
        // Get the size of the opened file.
        int size = (int)file.length();
    
        // Set to zero a counter for counting the number of
        // characters that have been read from the file.
        int chars_read = 0;
    
        // Create an input reader based on the file, so we can read its data.
        // FileReader handles international character encoding conversions.
        FileReader in = new FileReader(file);
    
        // Create a character array of the size of the file,
        // to use as a data buffer, into which we will read
        // the text data.
        char[] data = new char[size];
    
        // Read all available characters into the buffer.
        while(in.ready()) {
          // Increment the count for each character read,
          // and accumulate them in the data buffer.
          chars_read += in.read(data, chars_read, size - chars_read);
        }
        in.close();
    
        // Create a temporary string containing the data,
        // and set the string into the TextArea.
        textArea1.setText(new String(data, 0, chars_read));
    
        // Display the name of the opened directory+file in the statusBar.
        statusBar.setText("Opened "+fileName);
      }
      catch (IOException e)
      {
        statusBar.setText("Error opening "+fileName);
      }
    }
    
  2. Add the following import to the list of imports at the top of the file:

    import java.io.*;

  3. In the Structure pane, click on the File|Open event handler (menuItem2_actionPerformed(ActionEvent)) to locate the cursor to that event handler in the source code.

  4. Replace the method in the File|Open event handler if() statement that previously said:
        // Display the name of the opened directory+file in the statusBar.
        statusBar.setText("Opened "+filer1.getDirectory()+filer1.getFile());
    
        // code will need to go here to actually load text
        // from file into TextArea
    
    with this new openFile() method instead, using the concatenated Directory and File name.
        // Call openFile to attempt to load the text from file into TextArea
        openFile(filer1.getDirectory()+filer1.getFile());
    
  5. Now try it out and see if it works. Run your program and open a text file in your editor.

Tutorial Tutorial Step 10