Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 09:57, 6 June 2008.

CS001006 - Reading a text file line by line

From Forum Nokia Wiki


ID CS001006 Creation date June 6, 2008
Platform S60 3rd Edition, FP1 Tested on devices Nokia N95 8GB
Category Java ME Subcategory Files/Data


Keywords (APIs, classes, methods, functions): java.io.InputStreamReader, java.lang.StringBuffer, java.io.IOException, java.lang.Class, java.io.InputStreamReader.read(), java.lang.StringBuffer.append(), java.lang.Class.getResourceAsStream(), java.io.InputStreamReader.close()

Overview

Unlike Java SE with its BufferedReader class, Java ME doesn't provide the functionality to read a text file line by line. This code snippet demonstrates how to implement this functionality.

Source

import java.io.IOException;
import java.io.InputStreamReader;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
public class ReaderMIDlet extends MIDlet implements CommandListener {
    private Form mainForm;
    private Command exitCommand;
 
    /**
     * Constructor. Constructs the object and initializes displayables.
     */
    public ReaderMIDlet() {
        mainForm = new Form("Example MIDlet");
        
        exitCommand = new Command("Exit", Command.EXIT, 1);
        mainForm.addCommand(exitCommand);
        mainForm.setCommandListener(this);
        
        try {
            readFile("text.txt");
        } catch (IOException ex) {
            // TODO: Exception handling
        }
    }
 
    /**
     * Outputs the specified file onto the form.
     * @throws java.io.IOException if an exception occurs when reading the file
     */
    private void readFile(String filename) throws IOException {
        InputStreamReader reader = new InputStreamReader(
            getClass().getResourceAsStream(filename));
        String line = null;
        // Read a single line from the file. null represents the EOF.
        while ((line = readLine(reader)) != null) {
            // Append the read line to the main form with a linefeed ('\n')
            mainForm.append(line + "\n");
        }        
        reader.close();
    }
 
    /**
     * Reads a single line using the specified reader.
     * @throws java.io.IOException if an exception occurs when reading the line
     */
    private String readLine(InputStreamReader reader) throws IOException {
        // Test whether the end of file has been reached. If so, return null.
        int readChar = reader.read();
        if (readChar == -1) {
            return null;
        }
        StringBuffer string = new StringBuffer("");
        // Read until end of file or new line
        while (readChar != -1 && readChar != '\n') {
            // Append the read character to the string. Some operating systems
            // such as Microsoft Windows prepend newline character ('\n') with
            // carriage return ('\r'). This is part of the newline character and
            // therefore an exception that should not be appended to the string.
            if (readChar != '\r') {
                string.append((char)readChar);
            }
            // Read the next character
            readChar = reader.read();
        }
        return string.toString();
    }
 
    /**
     * From MIDlet.
     * Called when the MIDlet is started.
     */
    public void startApp() {
        // The initial display is the first form
        Display.getDisplay(this).setCurrent(mainForm);
    }
 
    /**
     * From MIDlet.
     * Called to signal the MIDlet to enter the Paused state.
     */
    public void pauseApp() {
        // No implementation required
    }
 
    /**
     * From MIDlet.
     * Called to signal the MIDlet to terminate.
     * @param unconditional whether the MIDlet has to be unconditionally
     * terminated
     */
    public void destroyApp(boolean unconditional) {
        // No implementation required
    }
 
    /**
     * From CommandListener.
     * Called by the system to indicate that a command has been invoked on a
     * particular displayable.
     * @param command the command that was invoked
     * @param displayable the displayable where the command was invoked
     */
    public void commandAction(Command command, Displayable displayable) {
        if (command == exitCommand) {
            // Exit the MIDlet
            notifyDestroyed();
        }
    }
}

Postconditions

The specified text file is output onto the form.

Related Discussions
Thread Thread Starter Forum Replies Last Post
large number of convertions canhuzmeli Digital Rights Management & Content Downloading 1 2005-04-04 19:55
How to judge whether the cursor is at the end of a line or not? curiouswalker Symbian User Interface 6 2008-07-06 17:30
need help regarding ApplyParaFormatL() deepthis Symbian User Interface 2 2007-08-28 07:48
Help with recording Drakyn Python 7 2007-01-04 21:32
Saving text to a file cshtarkov Python 5 2008-08-27 17:16
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX