Contents Prev Next

2 Beginning the Sample Application


2.1 - File.java
For the purposes of the sample application, we create an abstract superclass, called File and defined in File.java.


File.java

/*
 * This file defines the superclass for the classes used in the   
 * native library example.  The File class defined here is 
 * loosely based on the File classes provided as part of the 
 * Java base IO classes.This File superclass provides basic 
 * file and path manipulation with the expectation that
 * subclasses will provide the actual file management code 
 * depending on the file semantics they want to present.
 * For example, read only input files and read and write output 
 * files.
 *
 */

/*
 * We created a demo package for convenience. See The Java
 * Language Specification for moreinformation on packages.
 *
 */
package demo;


/**
 * The File superclass defines an interface for manipulating 
 * path and file names.  
 *
 */
public
class File {

    /**
     * The file path.  We want to use an abstract path separator
     * in Java that is converted to the system dependent path
     * separator.
     *
     */
    protected String path;

    /**
     * The class File's notion of a path separator character.  
     * This
     * will be the Java path separator.  Note that this will be
     * converted to the system dependent path separator at 
     * runtime
     * by code in the native library.
     *
     */
    public static final char separatorChar = `:';

    /**
     * The constructor, initializes the class with the given 
     * path.  Note
     * that we use the String class found in the Java core 
     * classes.
     *
     */
    public File(String path) {
		if (path == null) {
	    		throw new NullPointerException();
		}
		this.path = path;
    }	

    /**
     * Get the name of the file, not including the directory 
     * path.
     *
     */
    public String getFileName() {
		int index = path.lastIndexOf(separatorChar);
		return (index < 0) ? path : path.substring(index + 1);
    }

    /**
     * Get the name of the file including the full directory 
     * path.
     *
     */
    public String getPath() {
		return path;
    }
}
Contents Prev Next

Implementing Native Methods

Generated with CERN WebMaker