home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / doc / native / demo / inputfile.java < prev    next >
Text File  |  1995-05-19  |  3KB  |  103 lines

  1. /*
  2.  * Copyright (c) 1994, 1995 by Sun Microsystems, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * @(#)InputFile.java 95/02/01 1.4
  6.  *
  7.  * December 1994, Eugene Kuerner
  8.  *
  9.  * This file extends the File class by adding file manipulation
  10.  * methods creating a readonly input file abstraction.  We leverage
  11.  * the path manipulation code provided in the File superclass and
  12.  * extend that code with support for opening and reading files.
  13.  *
  14.  * version     1.0, 01 Dec 1994
  15.  * author    Eugene Kuerner
  16.  *
  17.  */
  18.  
  19.  
  20. /*
  21.  * Because this class depends on native methods (i.e. methods actually
  22.  * implemented in some other language such as C), we need to ensure
  23.  * that these functions are loaded into the Java interpreter at
  24.  * runtime.  We use the Java Linker class for this task.
  25.  * We need to "include" the class definitions for the Java
  26.  * Linker object.  The Linker class gets loaded in by the import
  27.  * statment.  And the loadLibrary call that's used later in this
  28.  * class is a static method that operates on the global class and
  29.  * not a specific object instance.  Please refer to the Java language
  30.  * specification for more information on static methods and variables.
  31.  *
  32.  */
  33. import java.util.Linker;
  34.  
  35.  
  36. /*
  37.  * Since we want this file to be part of the "demo" package we direct
  38.  * the compiler to associate this class with the other "demo" package
  39.  * classes.
  40.  *
  41.  */
  42. package demo;
  43.  
  44.  
  45. /**
  46.  * Define class InputFile that presents a simple readonly input file 
  47.  * abstraction.  Note that we use native or non-Java methods to
  48.  * implement some of the methods.
  49.  *
  50.  */
  51. public
  52. class InputFile extends File {
  53.  
  54.     /**
  55.      * Link in the native library that we depends on.  If we cannot
  56.      * link this in, an exception is generated and the class loading
  57.      * fails.  We have arbitrarily named the library "file" at the
  58.      * Java level (or libfile.so at the solaris level).  Additionally,
  59.      * the Linker call is part of the static initializer for the class.
  60.      * Thus, the library is loaded as part of this class being loaded.
  61.      *
  62.      */
  63.     static {
  64.         Linker.loadLibrary("file");
  65.     }
  66.  
  67.     /**
  68.      * Holds the system dependent handle to the file resource.
  69.      *
  70.      */
  71.     protected int fd;
  72.  
  73.     /**
  74.      * Constructor for the input file object.  Initializes the
  75.      * parent class with the path name.
  76.      *
  77.      */
  78.     public InputFile(String path) {
  79.     super(path);
  80.     }
  81.  
  82.     /**
  83.      * Attempts to open the file for reading.  Returns
  84.      * TRUE on success and FALSE on failure.  Alternatively, we could
  85.      * throw an exception and catch it.
  86.      *
  87.      */
  88.     public native boolean open();
  89.  
  90.     /**
  91.      * Attempts to close the previously opened file.  Has
  92.      * no return value.
  93.      */
  94.     public native void close();
  95.  
  96.     /**
  97.      * Reads some number of bytes from the opened file.  Returns
  98.      * the number of bytes read or -1 when the file is empty.
  99.      *
  100.      */
  101.     public native int read(byte b[], int len);
  102. }
  103.